我已经搜索了一段时间,在使用嵌套的 Git 子模块时找不到任何有效的解决方案或发布 Maven 模块的指南/教程。
我们有一个复杂的公共和私人项目结构,需要特定的订单才能成功构建。我们的目标是执行 Maven 发布,以便在一个步骤中标记和部署多个 Maven 工件。
这是简化的 Maven 项目/模块和 Git 存储库结构:
parent-public:1.0.0:pom (descriptor only, no Maven modules, public Git repository)
| |
| |- public-module:1.0.0-SNAPSHOT:jar
| (Maven module, child of parent-public, Git submodule, public repository)
|
|- parent-private:1.0.0-SNAPSHOT:pom
(Maven modules, Git submodule, private repository)
|
|- public-module:1.0.0-SNAPSHOT:jar
| (Maven module only, child of parent-public, Git submodule, public repository, released)
|
|- private-module:1.0.0-SNAPSHOT:war
(Maven module, child of parent-private, released)
当前的结构允许 Maven 独立构建和部署项目/模块。
发布时public-module
(从parent-public/parent-private/public-module目录),maven-release-plugin
表现良好(Git 存储库已被标记并已部署发布工件)。
发布时parent-private
,在目标签maven-release-plugin
出期间失败之前准备并开始执行发布(这里讨论了这个问题,但解决方案在我的上下文中不起作用并且没有足够的声誉来评论)。
这是当前的maven-release-plugin
配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<tagNameFormat>v@{project.version}</tagNameFormat>
<commitByProject>true</commitByProject>
<pushChanges>true</pushChanges>
</configuration>
</plugin>
是否有更优雅的方式来组织 Maven 模块和 Git 存储库以发布多个 Maven 工件?或者,在部署工件之前,是否有人找到了在结帐期间递归克隆 Git 子模块的解决方案?