【发布时间】:2011-04-20 16:08:03
【问题描述】:
考虑这个目录结构:
src/main/resources/
resource1.properties
subdir/
resource2.properties
我需要resource2.properties(及其兄弟姐妹)接受Maven filtering,但宁愿从过滤中排除所有其他资源。
这是安全的:其他属性文件可能包含不应被替换的 ${xxx} 标记。我确实需要在target 上保留源目录结构。
最后,我发现实现这一点的唯一方法(以不破坏 maven-eclipse-plugin 的 eclipse:eclipse 的方式)似乎是:
<resources>
<resource>
<directory>src/main/resources</directory>
<excludes>
<exclude>subdir/**</exclude>
</excludes>
</resource>
<resource>
<!-- 'subdir' resources need placeholder substitution (ie: "filtering") -->
<directory>src/main/resources/subdir</directory>
<targetPath>${project.build.outputDirectory}/subdir</targetPath>
<filtering>true</filtering>
</resource>
</resources>
您可以说这很复杂并且可能很脆弱。这是使用 Maven 2.2.1 和 maven-eclipse-plugin v2.8(最新)。
上面的其他稍微不那么复杂的版本已经触发了 maven-eclipse-plugin 的问题,它的抱怨类似于:
[INFO] Request to merge when 'filtering' is not identical. Original=resource src/main/resources: output=target/classes, include=[], exclude=[subdir/**|**/*.java], test=false, filtering=false, merging with=resource src/main/resources: output=target/classes, include=[subdir/**], exclude=[**/*.java], test=false, filtering=true
这让人想起this old thread:那里提到的解决方法有效(降级到 maven-eclipse-plugin 的 v2.6),但这应该不再需要,因为相关的错误被标记为已修复?
这看起来不太牵强的用例,但我正在苦苦挣扎......
【问题讨论】:
-
我建议使用 m2eclipse 而不是 maven-eclipse-plugin...
-
同意,虽然它肯定不是没有自己的怪癖 ;-) 这里的问题是一些团队成员坚持使用命令行工具...
-
命令行非常好。我也更喜欢命令行,但如果我使用 eclipse,我会使用 m2eclipse,因为它使工作更简单。