检查多模块Maven项目中的依赖项版本

时间:2015-10-13 08:21:29

标签: maven maven-release-plugin multi-module

我在我的多模块项目的父POM中有这个dependencyManagement:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>A</artifactId>
            <version>3.5</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>B</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>C</artifactId>
            <version>1.1</version>
        </dependency>
</dependencyManagement>

这在每个子模块POM:

模块A:

<parent>
    <groupId>${project.groupId}</groupId>
    <artifactId>ParentId</artifactId>
    <version>1.0</version>
</parent>
<artifactId>A</artifactId>
<version>3.5</version>
<packaging>nbm</packaging>

模块B:

<parent>
    <groupId>${project.groupId}</groupId>
    <artifactId>ParentId</artifactId>
    <version>1.0</version>
</parent>
<artifactId>B</artifactId>
<version>1.0</version>
<packaging>nbm</packaging>

模块C:

<parent>
    <groupId>${project.groupId}</groupId>
    <artifactId>ParentId</artifactId>
    <version>1.0</version>
</parent>
<artifactId>C</artifactId>
<version>1.1</version>
<packaging>nbm</packaging>

每次我们想要发布时,我们都必须检查每个子模块中的版本是否与dependencyManagement中的版本相同(每次更改内容时都要求开发人员更改两个版本的版本)。 / p>

有一些方法可以检查版本是否自动相同?如果版本不一样,我怎么能自动更改它们?

3 个答案:

答案 0 :(得分:0)

parent  pom discovery-ui :

<parent>
    <groupId>${project.groupId}</groupId>
    <artifactId>discovery-ui</artifactId>
    <version>1.0</version>
</parent>

<properties>
        <A.version>3.5</A.version>
        <B.version>1.0</B.version>
        <C.version>1.1</C.version>
<properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>A</artifactId>
            <version>${A.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>B</artifactId>
            <version>${B.version}</version>
        </dependency>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>C</artifactId>
            <version>${C.version}</version>
        </dependency>
</dependencyManagement>

Module A:

<parent>
    <groupId>${project.groupId}</groupId>
    <artifactId>discovery-ui</artifactId>
    <version>1.0</version>
</parent>
<artifactId>A</artifactId>
<version>${A.version}</version>
<packaging>nbm</packaging>

答案 1 :(得分:0)

你试过maven versions plugin吗?看起来processParent参数应该可以解决问题。不过,我还没有测试过。

mvn versions:set -DgenerateBackupPoms=false -f A/pom.xml -DnewVersion=NEW_VERSION -DartifactId=A -DprocessParent=true

答案 2 :(得分:0)

您已经在 <dependencyManagement> 部分下的父 POM 中声明了依赖项及其版本。 这样你只需要在你的子POM中声明GroupID:ArtifactID(没有版本,它会从父POM继承)