Java Maven多模块项目版本管理
指定多模块maven项目版本的最佳实践是什么 我希望所有模块都有一个版本字符串。即使在根父pom中只能有一个版本定义,我也需要在每个pom中指定父pom版本。这意味着,如果我需要更改版本,我需要更改所有POM。这实际上违背了目的。有什么想法吗???你试过这个吗 使用Java Maven多模块项目版本管理,java,maven,Java,Maven,指定多模块maven项目版本的最佳实践是什么 我希望所有模块都有一个版本字符串。即使在根父pom中只能有一个版本定义,我也需要在每个pom中指定父pom版本。这意味着,如果我需要更改版本,我需要更改所有POM。这实际上违背了目的。有什么想法吗???你试过这个吗 使用mvn版本:set-DnewVersion=“1.1-SNAPSHOT”可以在所有基础maven项目中设置给定版本 之后,您必须执行mvn versions:commit以删除临时文件并提交给您的VCS更好的方法是在parent po
mvn版本:set-DnewVersion=“1.1-SNAPSHOT”
可以在所有基础maven项目中设置给定版本
之后,您必须执行
mvn versions:commit
以删除临时文件并提交给您的VCS更好的方法是在parent pom.xml中定义您的版本,如下所示
<groupId>com.my.code</groupId>
<artifactId>my_pro</artifactId>
<version>${YOUR_VERSION}</version>
<properties>
<JDK_VERSION>1.7</JDK_VERSION>
<YOUR_VERSION>1.0-SNAPSHOT</YOUR_VERSION>// here you define your version
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<org.springframework.version>3.1.2.RELEASE</org.springframework.version>
</properties>
com.my.code
我的职业
${YOUR_VERSION}
1.7
1.0-SNAPSHOT//在这里您可以定义您的版本
UTF-8
3.1.2.1发布
那么您就不想在所有子pom.xml中逐个更改您的版本号了
子pom.xml可以添加依赖项,如下所示
<version>${YOUR_VERSION}</version>
${YOUR_VERSION}
另一个“最佳”方法是在多模块pom旁边创建一个父pom,该pom将提供一个依赖关系管理,其中包含多模块项目引用以及父pom自身的版本。
如果多模块项目需要另一个多模块项目作为依赖项,这将是最适合您的。
父pom必须是多模块pom的一部分:
<modules>
<module>my.parent.Pom</module>
<module>my.first.project</module>
<module>my.second.project</module>
<module>my.third.project</module>
</modules>
我的父母
我的第一个项目
我的第二个项目
我的第三个项目
父pom应该包含多模块项目的依赖关系管理
<version>VersionNumber</version>
<packaging>pom</packaging>
...
...
<dependencyManagement>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>my.first.project</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>my.second.project</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>my.third.project</artifactId>
<version>${project.version}</version>
</dependency>
VersionNumber
聚甲醛
...
...
${project.groupId}
我的第一个项目
${project.version}
${project.groupId}
我的第二个项目
${project.version}
${project.groupId}
我的第三个项目
${project.version}
您的所有多模块项目都不会定义groupId和版本号,因为它们将从父pom获得这些信息,此外,如果项目“第三方”需要依赖项my.first.project,则项目“第三方”pom文件中的依赖项将为:
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>my.first.project</artifactId>
</dependency>
${project.groupId}
我的第一个项目
这就是我们处理多模块项目和版本管理的方式。据我所知,这本应在11月的Maven 3.1中发布,但显然没有成功。我同意这会很好,但现在看来,我们必须在每个Pom中都有它。一个新的插件解决了这个问题:不确定为什么会将其标记为重复项-因为在指出的问题中,所有答案都表明必须在子Pom的
部分指定父版本。。。虽然OP明确指出“我希望所有模块都有一个版本字符串”!自从maven以来,这种方法就被弃用了3@Ilya那么,替代方案是什么呢?当你只是更改版本号时,不得不更改所有的子POM,这是一种耻辱!您可以使用${project.version}instead@Ilya你能提供这个的来源吗?我同意,但除了控制台中的警告之外,在任何地方都找不到它。这在构建整个项目时有效,但在构建或从(-rf:
)模块(例如b
)恢复时失败,如果它依赖于另一个模块(例如a
)-带有“无法解决父POM版本的a
”类错误;有什么想法吗?使用Maven 3.6.1谢谢。是的,这对我有用。唯一的缺点是,我需要将所有pom提交到源代码管理,即使是一个很小的版本更改。提交是将更改保存到pom文件的正确方法,pom文件是项目的一部分,当然也是历史的一部分,这是使用版本控制工具的目的。有趣!不过,我想知道如何在不指定父pom版本的情况下指定其版本(在一个子pom中需要)?@anoopelias是的,这也激怒了我,根本解决不了你的问题-我的问题也是如此。因为你最终会遇到同样的问题。你是怎么解决的?