6

1つの会社の親pomがあります。これは、dependencyManagementを使用して、使用されるすべてのアーティファクトのすべての依存関係のバージョンを管理します。

憂慮すべきことは、SNAPSHOTバージョンをdependencyManagementで定義できることです。ただし、Mavenリリースが実行されると、dependencyManagementでSNAPSHOTバージョンを使用してpomをリリースできます。なんで?

子プロジェクトを会社の親pomのリリースされたバージョンにポイントし、この子プロジェクトがSNAPSHOTバージョンであるにもかかわらずdependencyManagementで定義された依存関係を使用する場合、子プロジェクトをリリースできません。

MavenがdependencyManagementで定義されたアーティファクトのSNAPSHOTバージョンのリリースを許可するのはなぜですか?また、SNAPSHOTバージョンが定義されている場合に、Mavenリリースプラグインが失敗するように構成するにはどうすればよいですか?

4

2 に答える 2

3

驚くべきことは、依存関係管理で SNAPSHOT バージョンを定義できることです。ただし、maven リリースを実行すると、依存関係管理で SNAPSHOT バージョンで pom をリリースできます。なんで?

リリース時にmaven-release-pluginが SNAPSHOT バージョンを更新することを期待していdependencyManagementます。実際、これに関する Jira がいくつかあります。たとえば、MRELEASE-91MRELEASE-202が影響を与える可能性があります。

質問は、使用しているプラ​​グインのバージョンはどれですか?

しかし、正直なところ、どのバージョンがMRELEASE-202 の影響を受けるかは明確ではなく、コメントが混乱しています (したがって、問題が修正されているかどうかは疑問です)。とにかく、使用しているバージョンが影響を受ける場合は、より新しいバージョンにアップグレードしてください。バグ/リグレッション (バグだと思います) がまだ残っている場合は、新しい問題を提起してください。

于 2010-01-19T07:38:15.690 に答える
0

「理由」についての答えはありませんが (個人的にはバグだと思います)、これを防ぐ方法があります: Maven Enforcer プラグインを使用します。

smartics (小文字の s)と呼ばれる会社は、この正確な問題を防ぐためのルール ( 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>
于 2016-06-21T07:58:05.083 に答える