Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven多模块项目版本管理_Java_Maven - Fatal编程技术网

Java Maven多模块项目版本管理

Java Maven多模块项目版本管理,java,maven,Java,Maven,指定多模块maven项目版本的最佳实践是什么 我希望所有模块都有一个版本字符串。即使在根父pom中只能有一个版本定义,我也需要在每个pom中指定父pom版本。这意味着,如果我需要更改版本,我需要更改所有POM。这实际上违背了目的。有什么想法吗???你试过这个吗 使用mvn版本:set-DnewVersion=“1.1-SNAPSHOT”可以在所有基础maven项目中设置给定版本 之后,您必须执行mvn versions:commit以删除临时文件并提交给您的VCS更好的方法是在parent po

指定多模块maven项目版本的最佳实践是什么

我希望所有模块都有一个版本字符串。即使在根父pom中只能有一个版本定义,我也需要在每个pom中指定父pom版本。这意味着,如果我需要更改版本,我需要更改所有POM。这实际上违背了目的。有什么想法吗???

你试过这个吗

使用
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是的,这也激怒了我,根本解决不了你的问题-我的问题也是如此。因为你最终会遇到同样的问题。你是怎么解决的?