覆盖Maven的默认资源过滤器替换模式

Mat*_*ell 16 maven-2 filtering

默认情况下,maven会过滤这样的资源:

<properties>
  <replace.me>value</replace.me>
</properties>

<some-tag>
  <key>${replace.me}</key>
</some-tag>
Run Code Online (Sandbox Code Playgroud)

会得到你:

<some-tag>
  <key>value</key>
</some-tag>
Run Code Online (Sandbox Code Playgroud)

有没有办法覆盖maven选择要替换的字符串的方式?具体来说,我希望能够使用这个:

<some-tag>
  <key>@replace.me@</key>
</some-tag>
Run Code Online (Sandbox Code Playgroud)

得到与上面相同的结果.

Pas*_*ent 19

看一下delimiters资源mojo 的参数.像这样配置插件就可以了:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-resources-plugin</artifactId>
  <version>2.4.2</version>
  <configuration>
    <delimiters>
     <delimiter>${*}</delimiter><!-- to keep the default behavior -->
     <delimiter>@</delimiter><!-- to add Ant-like tokens style -->
    </delimiters>
  </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)


eug*_*enn 16

如果您只想使用一种方法,请禁用默认分隔符:

<useDefaultDelimiters>false</useDefaultDelimiters>
<delimiters>
  <delimiter>@</delimiter>
</delimiters>
Run Code Online (Sandbox Code Playgroud)

  • +1,如果官方文档告诉你,即使在定义你自己的时候,你仍然需要关闭默认文件,这样会很好. (6认同)