在多模块项目中执行maven发布失败

时间:2017-03-06 15:13:38

标签: maven maven-3 maven-release-plugin

我有一个多模块(module1,module2,module3)项目,它有一个聚合器pom来构建所有模块。

现在反应堆构建顺序是

                     module1
                     module2
                     module3

同样,module2依赖于module1,而module3依赖于module2,现在考虑依赖我使用$ {project.version}指定module2 pom中的module1版本,同样我使用$ {project.version}在模块3 pom中引用module2.Now快照作业是否成功执行但是当我尝试使用聚合器pom(所有模块的父pom)释放所有模块时,构建失败,说它无法释放项目到期到非发布的依赖项。有没有办法解决这个问题?

我正在使用Maven 3.0.4 maven-release-plugin:2.0-beta-8用于该项目。 同样,module2必须使用最新版本的module1,对于module3和module2也是如此。有必要将所有这些版本一起发布,因为我希望模块只有在所有模块都成功构建时才会被释放。

parent pom

    <project>
    <groupid>com.mycompany</groupid>
    <artifactid>parent</artifactid>
    <version>1.0.0</version>
    <modules>
            <module>module1</module>
            <module>module2</module>
            <module>module3</module>
        </modules>






    ..


    </project>


    module1 pom

    <project>
    <parent>
    <groupid>com.mycompany</groupid>
    <artifactid>parent</artifactid>
    <version>1.0.0</version>
    <relativePath>../pom.xml</relativePath>
    </parent>

    <groupid>com.mycompany</groupid>
    <artifactid>module2</artifactid>




    <dependencies>
        ..
        ..

    </dependencies>


    module2 pom


    <project>
    <parent>
    <groupid>com.mycompany</groupid>
    <artifactid>parent</artifactid>
    <version>1.0.0</version>
    <relativePath>../pom.xml</relativePath>
    </parent>

    <groupid>com.mycompany</groupid>
    <artifactid>module2</artifactid>




    <dependencies>
        <dependency>
        <groupid>com.mycompany</groupid>
        <artifactid>module1</artifactid>
        <version>${project.version}</version>
        </dependency>
         ..
         ..
         ..
    </dependencies>

    ..


    </project>

1 个答案:

答案 0 :(得分:0)

要检查的事项

1)确保使用$ {project.version}

指定同一父项下的所有依赖项

2)确保每个模块没有明确声明它自己的版本,但只指定一个父级,而父级又将设置版本。

3)确保每个项目都没有明确声明应该来自父级的groupId。

4)确保没有SNAPSHOT依赖项。 SNAPSHOT应该在所有模块中出现的唯一地方是父母pom。

5)确保所有的poms都有一个包装声明,父母应该是pom。