多模块应用程序maven

时间:2012-08-13 12:49:54

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

我有多模块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>
(...)

1 个答案:

答案 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版本(以及其他一些因素)。