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

Ben*_*nny 7 ant maven-2

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

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

我尝试创建一个属性文件作为过滤器,其中"basedir = $ {basedir}"作为其中一个属性,但我收到以下错误:

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

任何建议将不胜感激.

谢谢,

BJ

Pas*_*ent 7

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

  • 不要像${basedir}你一样使用Maven属性build.xml(如果可能的话)
  • 不使用Maven的过滤,但使用Maven插件Antrun来代替${build.date} ,只有这个属性(见这个答案)
  • 更改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>
    
    Run Code Online (Sandbox Code Playgroud)