多模块发布报告 SNAPSHOTS

Posted

技术标签:

【中文标题】多模块发布报告 SNAPSHOTS【英文标题】:Multi-module release reporting SNAPSHOTS 【发布时间】:2015-10-30 19:09:04 【问题描述】:

我有一个过去使用 maven-release-plugin 成功发布的多模块 maven 项目。当我现在尝试发布时,它报告说我的依赖项中仍然有 SNAPSHOTS。所有的 SNAPSHOTS 都来自多模块父项目中的其他项目,我有 autoVersionSubmodules=true。

Project
| pom.xml     // multimodule pom
|-BasePOM
| | pom.xml   // This is parent pom to all projects
|-Proj1
| | pom.xml
|-Proj2
| | pom.xml   // contains dependency to Proj1

唯一的版本信息在 BasePOM/pom.xml 和每个项目 pom 中的引用。依赖版本控制是使用 $project.version

BasePOM/pom.xml

<groupId>org.something</groupId>
<artifactId>BasePOM</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>

<!--other stuff -->

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>
            <configuration>
                <tagBase>$svn_root/tags</tagBase>
                <autoVersionSubmodules>true</autoVersionSubmodules>
                <updateDependencies>true</updateDependencies>
                <useReleaseProfile>false</useReleaseProfile>
        </configuration>
        </plugin>
    </plugins>
</build>

项目/pom.xml

<parent>
    <groupId>org.something</groupId>
    <artifactId>BasePOM</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>BasePOM/pom.xml</relativePath>
</parent>

<!--other stuff -->

<modules>
    <module>BasePOM</module>
    <module>Proj1</module>
    <module>Proj2</module>
</modules>

Proj1/pom.xml

<parent>
    <groupId>org.something</groupId>
    <artifactId>BasePOM</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../BasePOM/pom.xml</relativePath>
</parent>

<!--other stuff -->

Proj2/pom.xml

<parent>
    <groupId>org.something</groupId>
    <artifactId>BasePOM</artifactId>
    <version>1.0-SNAPSHOT</version>
    <relativePath>../BasePOM/pom.xml</relativePath>
</parent>

<!--other stuff -->

<dependencies>
    <dependency>
        <groupId>$project.groupId</groupId>
        <artifactId>Proj1</artifactId>
        <version>$project.version</version>
    </dependency>
</dependencies>

关于为什么 maven 报告我有“剩余的快照依赖项”有什么想法吗?

【问题讨论】:

【参考方案1】:

BasePOM不是你reactor的模块,所以不受autoVersionSubmodules = true的影响。

【讨论】:

这是我创建问题时的拼写错误。对于那个很抱歉。我会改正的。【参考方案2】:

我解决了这个问题。

上面多模块的使用很好。我的实际代码依赖于曾经在代码中但被删除的项目。这意味着工件位于 maven 存储库中,因此我的代码构建良好。直到我尝试发布,maven-release-plugin 才将错误的 SNAPSHOT 标记为未解决。因为删除的项目与其他项目的名称相似,所以我在尝试诊断此问题时并没有意识到这是一个错误。

我花了一整天的时间试图弄清楚为什么 maven-release-plugin 没有像以前那样工作。自我提醒:要特别注意错误信息的实际内容,而不是您认为的问题所在。

【讨论】:

以上是关于多模块发布报告 SNAPSHOTS的主要内容,如果未能解决你的问题,请参考以下文章

如何为多模块项目创建汇总的 Jacoco 报告?

多模块Android项目中的单个皮棉报告

mutiModule maven 项目的综合声纳报告

构建服务器在多模块构建中理解模块

Mojo 开发 - 处理多模块项目中未解决的依赖关系

使用maven搭建多模块项目