在多模块maven项目中指定公共资源
有没有办法在Maven的父项目模块之间共享资源? 例如,我想为多模块Maven项目中的所有模块指定一个log4j.properties文件。
通常,我使用Eclipse IDE通过选择一般项目来创建父项目,然后通过指定pom
的包装将其转换为Maven项目。 这将创建一个没有src
等文件夹的“干净”项目结构。 我想知道在这种情况下应该把这样的共享资源放在哪里。
EDIT1 :我想将公共资源放在父项目中。
我创建了一个额外的“基础”模块(项目),打包“jar”,其中包含src/main/resources
中的公共src/main/resources
。 然后我会让其他模块依赖于该项目。 现在他们看到了类路径上的公共资源。
Antoher的可能性是使用远程资源包。 您可以在父项目中配置它。 在这个例子中,我想复制一些文件只是为了测试。 如果使用此方法,则需要在另一个项目中创建包。
org.apache.maven.plugins maven-remote-resources-plugin 1.5 es.sca:myBundle:1.0.0 false true ${basedir}/src/test/resources process
是的,这似乎是一种可能的解决方案。 但我感兴趣是否有可能在父项目中指定这些资源(不引入额外的模块),因为父项目为子模块指定了所有常见的依赖项和Maven配置,我认为父项目是最合适的地方也是为了共同的资源。
在包装类型为pom的情况下,当指定目标包来管理您的共享资源时,只需将下一个(检查文件夹)添加到pom文件的构建部分:
org.apache.maven.plugins maven-resources-plugin copy-config-files package copy-resources ${project.build.directory}/logconfig false ${project.basedir}/src/main/resources
我想你可以将资源和/或testResources元素添加到你的pom中。 例如,要访问其他测试资源目录,请添加:
src/test/resources ../global/src/test/resources
请参阅Maven – 覆盖测试资源文件夹
我设法让它像这样工作:
我创建了一个project / assembly / test / resources / META-INF / persistence.xml文件,并将其添加到我的pom.xml中:
org.apache.maven.plugins maven-resources-plugin copy-test-persistence-xml-resources process-test-sources copy-resources src/ ${project.parent.basedir}/assembly/ true