Maven - 聚合的"全部"或"父母"项目?

Ale*_*ing 5 java maven-2 aggregate maven maven-assembly-plugin

出于教育目的,我已经建立了一个像这样的项目布局(为了更好地适应日食):

-product
 |
 |-parent
 |-core
 |-opt
 |-all
Run Code Online (Sandbox Code Playgroud)

Parent包含一个包含core,opt和all的聚合项目.Core实现了应用程序的强制部分.Opt是可选部分.所有这些都应该将core与opt结合起来,并将这两个模块列为依赖项.

我现在正在尝试制作以下工件:

  1. 产品core.jar添加
  2. 产品核心src.jar
  3. 产品的核心与 - dependencies.jar
  4. 产品opt.jar
  5. 产品-OPT-src.jar
  6. 产品选择与 - dependencies.jar
  7. 产品all.jar在
  8. 产品全src.jar
  9. 产品全有,dependencies.jar

他们中的大多数生产相当简单.虽然我对聚合工件有一些问题.我已经设法在'all'模块中使用自定义程序集描述符生成product-all-src.jar,该模块下载所有非传递deps的源代码,这样可以正常工作.这种技术还允许我使用all-with-dependencies.jar.

然而,我最近发现您可以使用source插件中的source:aggregate目标来聚合整个聚合项目的源.对于javadoc插件也是如此,它也通过父项目的使用进行聚合.

所以我在'all'模块方法和放弃'all'模块之间徘徊,只使用'parent'模块进行所有聚合.在"父"中产生一些聚合工件并且在"所有"中产生其他工件感觉不洁净.有没有办法在父项目中创建'product-all'jar,或者在'all'项目中聚合javadoc?或者我应该保留两者?

谢谢

Bri*_*Fox 5

扁平的树木不再经常使用.这是几年前完成的,用于处理Eclipse如何处理项目以及缺乏良好的Maven和Eclipse集成.如果使用m2eclipse将Maven项目导入Eclipse,那么maven-typical嵌套树就不会有任何问题.

至于如何构建Maven构建的一个很好的例子?Maven项目源本身.它拥有您想要的所有部件,包括打包捆绑包的最终组件.

典型的嵌套结构具有自上而下的层次结构,其中父进程正在对其下面的模块进行聚合,并且子进程从父进程继承值.虽然这些可以并且有时是分开的,但这不是常态.