0

我有一个具有以下结构的 Maven 项目

项目
- pom.xml
--- 模块1
--- 模块 1 的 pom.xml
--- 模块2
--- 模块 2 的 pom.xml
--- 模块3
--- 模块 3 的 pom.xml
-------- 模块31
-------- Module31 的 pom.xml
-------- 模块32
-------- Module32 的 pom.xml

即项目有它的pom.xml(包为pom)并有模块。每个模块 <parent> .. </parent>在单独的 ModuleX pom.xml 文件中都有一个部分,可以将其设置为“项目”的工件(在根 pom.xml 中定义)——或者可以将其设置为任何其他 project2/project3 /projectN 工件。

现在,由于这个原因,我查看 Project1 root pom.xml 是否设置为 0.0.1-SNAPSHOT 并且如果我想创建一个发布候选(非快照)构建“0.0.1”,那么我希望所有模块都应该生成与项目根 pom.xml 中设置的相同版本的工件。

我注意到,Module2 pom.xml 有一个父项目,它是其他项目(例如:Project2),并且该父项目的版本 ID 设置为“0.0.7-SNAPSHOT”,Module2 pom.xml(在项目下)也有一些使用 Project2 的工件的依赖项。

Module3 和 Module32 存在相同的情况,其中<parent>部分具有不同的父级(设置为 ProjectN,其中 N 可以是任何数字)并且依赖于这些或任何 ProjectN 项目的工件。

我的问题

1. 如果我创建项目的 0.0.1(非快照)构建,那么 Maven 将为根 pom、Module1、Module2、Module3 和 Module31/32 生成什么版本 id 工件?

2. 我怎样才能确保项目的 0.0.1 版本 - 为其所有模块生成相同的版本# 0.0.1(即使<parent>这些模块的部分使用不同的项目**N** 并且具有不同/更新部分<version>..</version>中设置的值<parent>)。

谢谢。

4

1 回答 1

2

看看maven-release-plugin,它确实想要你想要的。release:prepare是关于验证和更新 pom,标记项目并为下一个开发周期做准备。release:perform是关于基于标签构建项目并将工件推送到远程存储库。

于 2014-09-11T20:54:33.400 回答