我有多模块maven项目,主项目依赖于子模块。子模块的每个依赖关系都由这样的版本定义:${pom.version}
。我使用maven release插件。如果我尝试准备发布,我有一个关于缺少子模块版本的错误。
示例:
主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>
(...)
答案 0 :(得分:1)
您可能应该发布更多的项目结构,但通常多模块项目如下所示:
project
mod1
mod2
mod3
pom.xml
主要的pom.xml将具有“pom”打包类型,并在其中包含一个部分来构建其他所有内容:
<packaging>pom</packaging>
<modules>
<module>mod1</module>
<module>mod2</module>
<module>mod3</module>
</modules>
然后,确保事情正确构建的最可靠方法是执行:
mvn clean install
如果没有“安装”,很可能在maven反应堆中找不到东西,特别是取决于您使用的maven版本(以及其他一些因素)。