5

我们有1家企业的母公司pom。这使用dependencyManagement来管理所有使用的工件的所有依赖关系的版本。为什么maven release插件允许在依赖管理中使用SNAPSHOT版本?

令人担忧的是,SNAPSHOT版本可以在dependencyManagement中定义。虽然在执行maven发布时,允许在dependencyManagement中使用SNAPSHOT版本发布pom。为什么?

如果我将一个子项目指向公司父pom的发布版本,并且此子项目使用dependencyManagement中定义的依赖项,虽然它是SNAPSHOT版本,但我无法发布子项目。

为什么Maven允许在dependencyManagement中定义的工件的SNAPSHOT版本被释放?如果定义了SNAPSHOT版本,我该如何配置maven release插件才能失败?

回答

3

什么是令人震惊的是,SNAPSHOT版本可以在dependencyManagement中定义。虽然在执行maven发布时,允许在dependencyManagement中使用SNAPSHOT版本发布pom。为什么?

我期待maven-release-plugin在发布后更新dependencyManagement中的SNAPSHOT版本。其实,这里有一些Jira,例如MRELEASE-91MRELEASE-202可能会影响到你。

所以问题是:您使用的是哪个版本的插件?

但说实话,哪个版本受MRELEASE-202影响并不是很清楚,评论很混乱(所以我不知道问题是否修复)。无论如何,如果您使用的版本受到影响,请升级到更新的版本。如果错误/回归(我认为它是一个错误)仍然存在,那就提出一个新问题。

+0

THX。我们正在使用2.0-beta-9。我们将看看这些杰拉门票 – joshjdevl 2010-01-19 20:04:22

+0

关于这个问题的新JIRA [MRELEASE-454](https://issues.apache.org/jira/browse/MRELEASE-454)。看起来它在2.2.2中被修复了,但是被重新引入了,至少在2.4。 – Tunaki 2016-05-01 11:20:56

0

我对'为什么'(我个人认为这是一个错误)没有答案,但我有一种方法来防止发生这种情况:使用Maven Enforcer插件。

一家名为smartics(小写字母)的公司创建了一条规则(NoSnapshotDependenciesInDependencyManagementRule)以防止出现此确切问题。

你基本上需要以下内容添加到您的父POM:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-enforcer-plugin</artifactId> 
    <version>1.4.1</version> 
    <executions> 
    <execution> 
     <id>enforce-project-rules</id> 
     <phase>test</phase> 
     <goals> 
     <goal>enforce</goal> 
     </goals> 
     <configuration> 
     <rules> 
      <NoSnapshotDependenciesInDependencyManagementRule 
      implementation="de.smartics.maven.enforcer.rule.NoSnapshotsInDependencyManagementRule"> 
      <onlyWhenRelease>true</onlyWhenRelease> 
      <checkOnlyResolvedDependencies>false</checkOnlyResolvedDependencies> 
      </NoSnapshotDependenciesInDependencyManagementRule> 
     </rules> 
     </configuration> 
    </execution> 
    </executions> 
    <dependencies> 
    <dependency> 
     <groupId>de.smartics.rules</groupId> 
     <artifactId>smartics-enforcer-rules</artifactId> 
     <version>1.0.2</version> 
    </dependency> 
    </dependencies> 
</plugin> 
相关问题