java - 多模块应用程序maven

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

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

示例:

main pom 版本为 1.0,我尝试发布它。 Maven 将每个子模块构建到版本 1.1,然后尝试构建父模块,然后崩溃。因为它找不到sub-module-1.1

我不知道如何告诉 Maven 构建,并立即将其构建的每个子模块安装到本地存储库。我使用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>

然后,确保正确构建的最可靠方法是执行:

mvn clean install

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

关于java - 多模块应用程序maven,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11934592/

相关文章:

java - 使用 keytab 文件连接到 Impala 的 jdbc URL

java - Apache Tomcat Servlet 线程未完成

java - 无法通过 Jenkins 部署 war 来刺激

java - 如何为列表 JAXB 制作 setter

java - Maven 发布插件失败 : source artifacts getting deployed twice

java - Envers 审计表中缺少属性

java - 如何在 Eclipse 中构建 Maven 项目

java - 什么时候应该在项目生命周期中使用 mvn release?

maven - Maven 版本 :perform 期间丢失的属性

java - 是否可以在同一系统上同时运行两个服务器?或者当 XAMPP/WAMP 未运行时如何在 Eclipse 中执行 MySQL 查询?