我正在尝试为大型(超过100个模块)的多模块Maven项目创建一个程序集。
有些(但不是全部)模块有各种文件需要包含在最终的程序集中,但我很难弄清楚如何将它们放在那里。
这是典型模块的布局:
+- pom.xml
+- src
| +- main
| +- java
| +- ...
| +- resources
| +- ...
| +- scripts
| +- ...
此模块具有JAR打包,因此主要工件是JAR文件。
这是最终装配的理想格式:
+- bin
| +- <union of all files from src/main/scripts in the various modules>
+- lib
| +- <union of all JAR files produced by the various modules>
我知道如何进行装配结构的 lib 部分,但我不知道如何完成 bin 部分。
This blog post似乎建议每个模块应该创建自己的程序集(本质上是一个程序集片段),然后由我的实际程序集组件聚合在一起。
这是在Maven中完成的吗?它似乎非常重量级和重量级慢。是否有不同/更好的方式?
在回答之前,请记住以下事实:
答案 0 :(得分:0)
不是每个模块都有自己的程序集,而是创建一个名为assembly
的单独模块(名称是任意的),并让您的程序集描述符使用相对路径从其他模块中获取任意文件。即。
<files>
<file>
<source>../config-module/target/sample-config.xml</source>
<outputDirectory>configs</outputDirectory>
</file>
</files>
路径../config-module
假设您拥有该名称的模块。我还假设您从sample-config.xml
而不是target/
目录中获取src/main/whatever
文件。
请注意,如果您的“任意文件”是由每个模块(即WAR)生成的Maven工件,那么可能有更多的自觉方式来完成上述操作。看到: Maven: The Complete Reference - "Best Practices"
答案 1 :(得分:0)
不幸的是,除了创建程序集程序之外,我找不到更好的答案。看起来我们将编写自己的Maven插件来处理这个要求,因为根据我们的情况使用程序集程序组件太麻烦了。