【问题标题】:Mulit-module application maven多模块应用maven
【发布时间】:2012-08-09 16:47:07
【问题描述】:

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

例子:

main 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>
(...)

【问题讨论】:

  • 你是否明确将每个子模块的版本设置为${pom.version}? version 属性是从父级继承的...
  • 首先你能发布你的pom(摘录没问题)而且不要使用pom.version更好的是project.version
  • 发布插件会自动从反应器内更新依赖版本,所以实际上不需要引用 ${project.version} 也请记住,@khmarbaise 所说的 ${pom.version } 已弃用,取而代之的是 ${project.version}

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


【解决方案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 reactor 中找不到东西,尤其是取决于您使用的 maven 版本(以及其他一些因素)。

【讨论】:

  • OP 与maven-release-plugin 存在问题,它比仅运行mvn install 复杂得多。我不确定这个答案是否会有很大帮助,因为问题并不那么清楚。目前我会投反对票,对不起...
  • @maba 我的意思是是否发布插件,没有足够的关于他的项目结构的信息供任何人提供任何帮助。我只是建议结构应该是什么样子,以防它不是相对“标准”。
  • Run mvn release:perform 将执行预定义的Maven阶段mvn deploy,它将自动执行mvn install
  • 如果您的项目在安装阶段无法从干净的本地存储库构建,那么您做错了 Maven。如果您执行以下操作,一个好的 maven 项目应该正确构建 rm -rvf ~/.m2/repository && mvn clean verify 如果您需要安装,您的项目结构不正确或依赖于糟糕的插件
  • 我可以在本地存储库中构建 mu 项目。只需键入 mvn clean install。我的结构类似于现在的女巫马特。我尝试释放时遇到问题。我尝试通过 mvn release:prepare 发布。插件询问问题的解决依赖关系:是的,当询问版本时,我键入以增加版本“1.1->1.2”。它构建每个子模块,例如。它构建并发布 1.1 版,并在 POM(子模块)中增加到 1.2 版。如果它尝试构建父项目 1.1 版,它会崩溃,因为它在 1.1 版上找不到对子模块的依赖关系。这个版本是不久前建立的。
猜你喜欢
  • 1970-01-01
  • 2012-04-27
  • 2017-05-18
  • 2016-07-26
  • 2020-09-13
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 2017-02-09
相关资源
最近更新 更多