10

親pomにdependencyManagementセクションがあります

<dependencyManagement>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.2.1</version>
    </dependency>
</dependencyManagement>

そしてそれを持っている子供ポン

<dependencies>
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
        <version>4.0</version>
    </dependency>
</dependencies>

私は、enforcer pluginを使用して子 pom でこの種のオーバーライドを防止しようとしましたが、これらを親でのみ設定できるようにしましたが、できませんでした。これでビルドが失敗することを望みます。そのプラグインまたは他の方法で、それは可能ですか?

すべてのバージョンを同じにすることを強制するDependencyCovergenceがありますが、すべての推移的な依存関係 (明示的に定義されたものだけ) を制御したくないため、制限が強すぎます。

子 pom に新しい依存関係がまったく導入されないようにすることができれば幸いです。定義されているものはすべて親 pom で実際に定義し、必要に応じて子で言及する必要があります。

4

1 に答える 1

11

親 pom にdependency:analyze-dep-mgt の実行を追加し、バージョンの不一致で失敗するように構成できます。

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.6</version>
        <executions>
          <execution>
            <id>analyze</id>
            <phase>package</phase>
            <goals>
              <goal>analyze-dep-mgt</goal>
            </goals>
            <configuration>
              <failBuild>true</failBuild>
              <ignoreDirect>false</ignoreDirect>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
于 2013-01-30T15:32:17.157 に答える