多模块发布报告 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的主要内容,如果未能解决你的问题,请参考以下文章