我有一个multimodule(module1,module2,module3)项目,它有一个聚合器pom来构建所有模块 .
现在反应堆构建顺序是
module1
module2
module3
另外module2依赖于module1,module3依赖于module2,现在考虑依赖我使用$ 指定module2 pom中的module1版本,同样我在模块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 回答
要检查的事情
1)确保使用$ 指定同一父项下的所有依赖项
2)确保每个模块没有明确声明它自己的版本,但只指定一个父节点,而父节点又设置版本 .
3)确保每个项目都没有明确声明应该来自父项的groupId .
4)确保没有SNAPSHOT依赖项 . SNAPSHOT应该在所有模块中出现的唯一地方是父pom .
5)确保所有的poms都有包装声明,父母应该是pom .