Maven Release基于项目构建 - 工件版本号

时间:2014-09-11 20:43:24

标签: maven version parent maven-release-plugin subproject

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

Project
- pom.xml
--- Module1
--- pom.xml for Module1
--- Module2
--- pom.xml for Module2
--- Module3
--- pom.xml for Module3
------- Module31
------- pom.xml for Module31
------- Module32
------- pom.xml for Module32

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

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

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

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

我的问题

1.如果我创建了Project的0.0.1(非快照)版本,那么Maven将为根pom生成哪些版本ID工件,包括Module1,Module2,Module3和Module31 / 32?

2.我如何确保项目的0.0.1版本 - 为其所有模块生成相同的版本#0.0.1(即使这些模块的<parent>部分使用不同的项目** N **并在<version>..</version>部分设置了不同/较新的<parent>值。

感谢。

1 个答案:

答案 0 :(得分:2)

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