我正在努力从蚂蚁转移到一个复杂的多模块项目。 我们想要实现的目标是:
示例:父项目 SON A
Parent Project
SON
GRANDSON A
GRANDSON B
DAUGTER (DEPENDS ON SON)
GRANDSON C
GRANDSON D
我想要的是,当开发人员正在使用子项目时,他只需下载父项目,并且应该从svn存储库中解析SON依赖项。我知道可以通过在pom.xml中定义dependecy来完成,但这会与我的第二个要求相冲突。
2)下载父项目的所有女儿和儿子并进行编译,以便像Jenkins这样的自动构建管理器可以检查构建。此外,如果构建成功,我还想在maven存储库的标志上发布修订版。请注意,修订版必须是每个模块的负责人。
3)在我想要创建tar文件或我自己的样式目录的过程中,根据我的需要,它将在不同的目录中包含不同的jar。 (我可以通过添加ant copy命令来实现这一点;任何更好的想法都可以实现)
maven实现它的标准方法是什么。
答案 0 :(得分:0)
在Maven层次结构中,只有叶子项目(示例中的孙子项目)将是包含代码并生成工件(例如jar)的实际模块。内部节点(Parent,Son,Daughter)仅用于保存层次结构中模块共享的公共配置和依赖项。因此,女儿不能依赖儿子,但是孙子C可以依靠孙子A,例如。
如果父项目层次结构有自己的生命周期,即poms可以独立发布,它们应该在SVN模块上。开发子模块的开发人员甚至不需要下载这些poms,因为如果它们由Jenkins部署,它们将自动从Archiva中检索到。有关类似情况,请参阅this answer。
但是,您看到表示您希望构建和释放所有模块的时间相同。在这种情况下,您可以通过将所有项目保留在同一SVN存储库中来拥有相同的pom层次结构。