1

我有多模块 maven 项目,其中主项目依赖于子模块。子模块的每个依赖项都由版本定义,如下所示${pom.version}:我使用 Maven 发布插件。如果我尝试准备发布,则会收到关于缺少子模块版本的错误。

例子:

main pom 在版本上1.0,我尝试发布它。Maven 将每个子模块构建为 version 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>
(...)
4

1 回答 1

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 干净安装

如果没有“安装”,很有可能在 Maven 反应器中找不到东西,特别是取决于您使用的 Maven 版本(以及其他一些因素)。

于 2012-08-13T13:09:59.977 回答