【问题标题】:How do I preserve whitespace in a Maven plugin configuration?如何在 Maven 插件配置中保留空格?
【发布时间】:2011-11-15 10:36:22
【问题描述】:

我有一个名为suffix 的插件配置参数。我希望用户能够指定一个换行符(按Return 键产生的文字字符,而不是一些转义的变体,尽管我会谈到那个)作为该参数的值。

同时,该参数有一个default-value 设置。我想继续使用它。

如何在插件的配置节中指定suffix 参数应该换行?

我试过了:

<suffix><![CDATA[
]]></suffix>

...还有这个:

<suffix>${line.separator}</suffix>

...(实际上替换了正确的字符,但 XML 解析会踩到它)和这个:

<suffix><[!CDATA[${line.separator}]]></suffix>

...还有这个:

<suffix>&x0d;</suffix>

...还有这个:

<suffix xml:space="preserve">
</suffix>

...一切都无济于事。具体来说,我看到的是参数的默认值。

编辑:有趣的是,在 Maven 的内部有机会处理值之前,空格早就被吃掉了。 mvn help:effective-pom 将显示空格已被删除。在解析阶段的早期删除前导、尾随和“唯一”空白内容。

在我看来这很可能是一个错误,所以我已经提交了http://jira.codehaus.org/browse/PLX-461 来跟踪它。

【问题讨论】:

  • 让我们稍微关注一下&lt;suffix&gt;${line.separator}&lt;/suffix&gt;。你是说令牌替换发生在 XML 解析之前?
  • 不,我是说 Maven 解析 pom.xml 的行为会导致前导和尾随空格被修剪。您只需执行mvn help:effective-pom 即可看到这一点。继续为任何插件指定一个配置值,并用前导和尾随空格包围该值,然后执行mvn help:effective-pom。你会注意到空间被破坏了。 Maven 属性插值与此无关(我发现)。
  • 您可以发布您创建的 JIRA 项目作为您自己问题的答案,并接受您自己的答案作为正确答案。这样这个问题就可以解决了。

标签: maven-2 maven maven-3


【解决方案1】:

codehaus 链接不再起作用,但我在 maven 文档中发现,从 3.0 版开始,您可以将属性 xml:space="preserve" 添加到您不想修剪的任何元素。

【讨论】:

    【解决方案2】:

    根据说明,我通过将人们推荐给以下 JIRA 来回答这个问题:https://issues.apache.org/jira/browse/MNG-5380(最初位于 http://jira.codehaus.org/browse/PLX-461)。

    【讨论】:

      【解决方案3】:

      使用$${line.separator}。双重$$ 逃脱它。 Codehaus IRC 频道上的一个小伙子最近分享了他的发现,所以功劳应该归于他。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-19
        相关资源
        最近更新 更多