多模块应用程序maven
我有多模块maven项目,主项目依赖于子模块。子模块的每个依赖关系都由以下版本定义:${pom.version}
。我使用Maven发布插件。如果我尝试准备发布,我有关于子模块版本丢失的错误。多模块应用程序maven
例子:
主要POM是1.0
版本,我尝试将其释放。 Maven将每个子模块构建到版本1.1
,然后尝试构建父代,然后崩溃。因为找不到sub-module-1.1
。
我不知道如何告诉maven构建,并立即安装到local-repo构建的每个子模块。我使用maven2。
我POM:
<modelVersion>4.0.0</modelVersion>
<groupId>com.voncuver</groupId>
<artifactId>voncuver</artifactId>
<packaging>pom</packaging>
<version>1.1-SNAPSHOT</version>
<name>multimodule</name>
<modules>
<module>mod1</module>
<module>mod2</module>
</modules>
(...)
<dependencyManagement>
<dependencies>
<dependency>
<artifactId>mod1</artifactId>
<groupId>com.voncuver</groupId>
<version>${pom.version}</version>
</dependency>
<dependency>
<artifactId>mod2</artifactId>
<groupId>com.voncuver</groupId>
<version>${pom.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
(...)
你或许应该张贴多一点你的项目结构,但通常一个多模块项目如下:
project
mod1
mod2
mod3
pom.xml
主要的pom.xml会有“ pom“包装类型,并且在其中有一个部分用于构建其他部分:
<packaging>pom</packaging>
<modules>
<module>mod1</module>
<module>mod2</module>
<module>mod3</module>
</modules>
N,最可靠的方法,以确保一切建立正确的执行:
MVN全新安装
没有“安装”,这是极有可能的事情可能不会在Maven反应堆被发现,尤其取决于你使用的maven版本(以及其他一些因素)。
OP有'maven问题-release-plugin',它比运行'mvn install'复杂得多。我不确定这个答案会有多大帮助,因为这个问题不太清楚。目前,我将downvote,对不起... – maba 2012-08-13 13:47:41
@maba我的观点是释放插件或没有,没有足够的信息关于他的项目结构任何人给予任何帮助。我只是提出了结构应该是什么样子,以防它不是相对“标准”的。 – Matt 2012-08-13 17:11:26
运行'mvn release:perform'将执行预定义的Maven阶段'mvn deploy',它将自动执行'mvn install'。 – yorkw 2012-08-13 21:48:42
您是否明确将每个子模块的版本设置为$ {pom.version}?版本属性继承自父... – 2012-08-13 14:41:04
首先你可以发布你的pom的(摘录是好的)此外不要使用pom.version更好的是project.version – khmarbaise 2012-08-13 14:43:13
发布插件会自动更新反应器内的依赖版本,所以实际上没有必要引用$ {project.version}也请记住,@khmarbaise表示$ {pom.version}不赞成使用$ {project.version} – 2012-08-14 08:10:05