我们正在考虑将Maven用于大型多项目构建,以便让您了解大小,一些子项目有几百万行代码。
理想的结构如下:
其中每个模块实际上是一个maven子项目,并且依赖关系并不总是在工件级别(即jar),而是导致子项目在必要时进行编译。
添加公共项目根允许表达所描述的依赖关系,例如:
但强迫你从项目根构建。请记住,这是一个非常大的项目,完整的构建将是不可取的。
大多数团队甚至在 moduleX 级别的 projectX 级别工作。
我们需要的是有时针对生成的工件(即 module1 生成的jar)构建,有时我们要从源代码构建。
我已经看了一下reactor插件,它允许你从某个点恢复构建或只构建dependents。但它似乎非常手动(尽管在某些情况下它非常有用)。
我想到的是某种类型的工件存储库,它在需要时构建工件。例如,使 projectA 成为 projectB 引用的工件库。 当您出于某种原因需要重建 projectA 的工件时,您可以删除jar。
这样的东西是作为Maven的一部分还是作为插件实现的? 如果没有,是否可行实施?
答案 0 :(得分:3)
我们需要的是有时针对生成的工件(即module1生成的jar)构建,有时我们要从源代码构建。
我没有看到任何特殊问题:
当您想要构建源代码时,请使用reactor构建和高级reactor选项,例如构建moduleAlpha和moduleAlpha的依赖项:
mvn -pl moduleAlpha -am
我想到的是某种类型的工件存储库,它在需要时构建工件。例如,使projectA成为projectB引用的工件库。当您出于某种原因需要重建projectA的工件时,您可以删除jar。
我不确定你在说什么,删除JAR 听起来不是一个好主意。
您需要的是一个持续构建过程,该过程尽可能经常构建整个项目,以生成所有模块的SNAPSHOT并将它们部署在公司存储库中。这只是要走的路。
为了尽可能快地构建,我考虑使用Maven 3.x和parallel builds选项。