使用Maven,我如何阻止Maven过滤某些属性但允许其他属性?

时间:2010-05-07 15:07:48

标签: maven-2 ant

问题是我正在尝试构建一个在其资源中包含build.xml文件的项目。基本上,我将我的项目打包为Maven2的jar,然后使用ant installer来安装我的项目。

build.xml文件中有一个我需要过滤的属性,名为build.date,但还有其他一些我不想过滤的属性,比如$ {basedir},因为它被ant安装程序使用但是被Maven的basedir变量所取代。所以,我需要以某种方式告诉Maven过滤$ {build.date},而不是$ {basedir}。

我尝试使用“basedir = $ {basedir}”作为属性之一创建属性文件,但是我收到以下错误:

解析表达式:'$ {basedir}':检测到以下递归表达式循环:[basedir]

我们非常感谢任何建议。

谢谢,

B.J。

1 个答案:

答案 0 :(得分:7)

据我所知,这是不可能的,你不能阻止maven过滤给定的属性。所以:

  • 不要在${basedir}中使用build.xml等Maven属性(如果可能的话)
  • 不要使用Maven过滤,而是使用Maven Antrun插件来替换 ${build.date}而只使用此属性(请参阅this answer
  • 更改资源插件的delimiters参数,并在@build.date@

    中使用${build.date}代替build.xml
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-resources-plugin</artifactId>
      <version>2.4.2</version>
      <configuration>
        <useDefaultDelimiters>false</useDefaultDelimiters>
        <delimiters>
         <delimiter>@</delimiter><!-- for Ant-like tokens style -->
        </delimiters>
      </configuration>
    </plugin>