9

アセンブリプラグインを使用すると、予期しないバージョンの依存関係(1.5.8)が発生しますが、他にはありません。私のpomで私は持っています:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.6.0</version>
    </dependency>

dependency:treeまたはを実行するdependency:listと、正しいバージョンが表示され、正しいバージョンのみが表示されます。Eclipseをチェックインすると、正しいバージョンしか表示されません。

私のassembly.xmlには、次のものがあります。

<dependencySets>
    <dependencySet>
        <outputDirectory>lib</outputDirectory>
    </dependencySet>
</dependencySets>

結果のzipで、slf4j-log4j12-1.5.8.jarを取得します。これがどこから来ているのかわかりません。何か助けはありますか?

Maven3.0.4を使用します。

4

2 に答える 2

10

これは、「不適切な」アセンブリ プラグイン バージョン (2.2-beta-5) が原因でした。私の pom.xml はプラグインのバージョンを指定していませんでした。明示的に 2.4 (またはこれを読んだ時点で最新バージョン!) としてマークしたところ、プラグインは正しい依存関係を取得しました。

教訓 - ビルドで次の警告が表示された場合:

[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-whatever-plugin is missing
It is highly recommended to fix these problems because they threaten the stability of your build.

.. 修理する!

于 2012-12-13T14:59:26.247 に答える
4
  1. 悪い JAR (slf4j-log4j12-1.5.8.jar) を Maven リポジトリから削除して、そこに正しい JAR (slf4j-log4j12-1.6.0.jar) を追加してみてください。次に、スイッチを使用してビルドを実行します--offline。Maven が間違った JAR を取得しようとすると、ビルドは失敗し、maven はどの推移的な依存関係からそれを取得しようとしているかを表示します。次に、これを推移的な依存関係から除外します。

    <exclusions>
      <exclusion>
        <artifactId>slf4j-api</artifactId>
        <groupId>slf4j-log4j12</groupId>
      </exclusion>
    </exclusions>
    
  2. 取得した JAR に正しい groupId があるかどうかを確認します。一部の人々は、 maven を混乱させる可能性のある愚かで邪悪な特別な目的のために、一般的な JAR の複製を作成します。特に、org.jboss.resteasy:slf4j-log4j12代わりに取得していないかどうかを確認してください。次のように、maven-enforcer-plugin を使用して望ましくない依存関係を禁止できます。

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-enforcer-plugin</artifactId>
      <version>1.0</version>
      <executions>
        <execution>
          <id>enforce-banned-dependencies</id>
          <goals>
             <goal>enforce</goal>
          </goals>
          <configuration>
            <rules>
              <bannedDependencies>
                <excludes>
                  <exclude>org.slf4j:slf4j-log4j12:1.5.8</exclude> <!-- Wrong version, dude! -->
                  <exclude>commons-logging:*</exclude> <!-- Worst, stupidest, lamest logging framework ever! -->
                  <exclude>org.jboss.resteasy:slf4j-simple</exclude> <!-- Evil JAR duplication. -->
                  <exclude>org.jboss.resteasy:slf4j-api</exclude> <!-- Evil JAR duplication. -->
                  <exclude>org.jboss.resteasy:slf4j-log4j12</exclude> <!-- Evil JAR duplication. -->
                  <exclude>org.jboss.resteasy:jackson-core-asl</exclude> <!-- Evil JAR duplication. -->
                  <exclude>org.jboss.resteasy:jackson-mapper-asl</exclude> <!-- Evil JAR duplication. -->
                  <exclude>org.jboss.resteasy:jackson-core-lgpl</exclude> <!-- Evil JAR duplication. -->
                  <exclude>org.jboss.resteasy:jackson-mapper-lgpl</exclude> <!-- Evil JAR duplication. -->
                  <exclude>org.codehaus.jackson:jackson-core-lgpl</exclude> <!-- Two distinct packages for the exact same thing always creates conflicts. We want the ASL one. -->
                  <exclude>org.codehaus.jackson:jackson-mapper-lgpl</exclude> <!-- Two distinct packages for the exact same thing always creates conflicts. We want the ASL one. -->
                  <exclude>velocity-tools:velocity-tools</exclude> <!-- Was renamed. -->
                  <exclude>velocity:velocity</exclude> <!-- Was renamed. -->
                  <exclude>struts:struts</exclude> <!-- Was renamed. -->
                  <exclude>javassist:javassist</exclude> <!-- Was renamed. -->
                  <exclude>axis:*</exclude> <!-- Was renamed to org.apache.axis:* and wsdl4j:wsdl4j . -->
                  <exclude>commons-beanutils:commons-beanutils-core</exclude> <!-- Redundant package. -->
                  <exclude>xpp3:xpp3_min</exclude> <!-- Redundant package. -->
                  <exclude>xml-apis:xml-apis:2.0.0</exclude> <!-- Bad package, for some strange reason 2.0.x is inferior to 1.4.x. -->
                  <exclude>xml-apis:xml-apis:2.0.2</exclude> <!-- Bad package, for some strange reason 2.0.x is inferior to 1.4.x. -->
                  <exclude>quartz:quartz</exclude> <!-- Was renamed. -->
                </excludes>
              </bannedDependencies>
            </rules>
          </configuration>
        </execution>
      </executions>
    </plugin>
    
于 2012-12-13T00:06:45.057 に答える