我有一个像这样的多模块项目:
parent
|
+-- childA
| +-- src/main/resources/application.properties
|
+-- childB
+-- src/main/resources/application.properties
+-- src/main/filters/filter.properties
我使用childB中的application.properties
过滤了childA和childB中的filter.properties
。
我跟着this strategy将过滤器文件附加到childB的工件上,然后将其解压缩到childA的目标上:
childA/target/filters/filter.properties
childA有这样的资源过滤:
<build>
<filters>
<filter>target/filters/filter.properties</filter>
</filters>
</build>
Eclipse正在childA/pom.xml
标记错误:
加载属性文件时出错 &#39;父\ childA \目标\滤波器\ filter.properties&#39; (org.apache.maven.plugins:行家资源-插件:3.0.2:复制资源:默认资源:处理资源)
我在构建应用程序时可以使用过滤器文件,因此我并不担心。
如何更新childA的pom.xml以永久忽略此错误?
答案 0 :(得分:1)
从Eclipse Luna升级到Neon后,问题就消失了。
答案 1 :(得分:0)
您已从目标文件夹中获取了filter.properties
个文件。这不是正确的方法。你应该从你的角度考虑它
src/main/filters/filter.properties
档案。
<filters>
<filter>${basedir}/src/main/filters/filter.properties</filter>
</filters>
有关更多信息,请参阅本教程:Error loading property file Maven
从我这边,您可以将属性文件保存在父级中。然后使用以下过滤器在ChildA和childB上给出引用。希望它能奏效。
<filters>
<filter>${basedir}/src/main/filters/filter.properties</filter>
</filters>
考虑将项目列为依赖项时会发生什么。 如果您通过使用mojo来指定其依赖项来指定它们 从磁盘上的.properties文件,Maven无法复制它 何时从Maven存储库中提取依赖项。所以 Maven无法确定依赖关系。因此它可以 永远不会工作。
您可以做的是使用外部系统(例如ANT)来生成 模板中的pom.xml,其中的版本已替换为该文件。 然后使用实例化的模板进行构建。
资源链接: https://stackoverflow.com/a/14727072
此处提出类似问题:Maven2 property that indicates the parent directory
Dennis Lundbarg在this post中将此问题称为反模式:
使用相对路径引用另一个模块中的文件是一个 反模式。这样做的一个原因是它会破坏你的构建 你正在使用像Jenkins这样的构建服务器。构建服务器将 将每个模块签出到一个单独的文件夹中,该文件夹不在 您的项目正在使用的相同文件夹结构。
共享资源(如配置文件)的最佳实践方法是 将它们存储在部署到存储库的存档中。什么时候 完成后你可以使用它作为依赖,制作 类路径上可用的资源,或使用依赖项:unpack 目标是将文件提取到您想要的任何位置。