2012-12-12 12 views
9

アセンブリプラグインを使用すると予期しないバージョンの依存関係(1.5.8)が発生しますが、それ以外の場所はありません。私が持っている私のポンポンで:私はdependency:treeまたはdependency:listを実行するとmavenアセンブリが間違った依存関係を引き出す

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

、私は正しいバージョンのみ正しいバージョンを参照してください。 Eclipseでチェックインすると、正しいバージョンのみが表示されます。私が持っている私のassembly.xmlで

:結果のジップで

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

を、私はSLF4J-log4j12-1.5.8.jar得ます。これがどこから来ているのか分かりません。どんな助け?

maven 3.0.4の使用。

答えて

10

これは、「不良」の組立プラグインのバージョン(2.2ベータ-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. 

...それを修正します!

+1

2.2ベータ5から2.4への切り替えは、私のためにこれを修正しました:-) –

+0

正確な問題のために頭を叩いた時間がたってから、この質問については、これは私が必要としていた答えです。ありがとうございました! – Stewart

4
  1. あなたはMavenのリポジトリから悪いJAR(SLF4J-log4j12-1.5.8.jar)を削除し、そこに正しいもの(SLF4J-log4j12-1.6.0.jar)を追加しようとするかもしれません。次に、--offlineスイッチを使用してビルドを実行します。 Mavenが間違ったJARを取得しようとすると、ビルドは失敗し、Mavenはそれを取得しようとしている過渡的な依存からあなたを表示します。それはあなたが得たJARが正しいのgroupIdを持っている場合

    <exclusions> 
        <exclusion> 
        <artifactId>slf4j-api</artifactId> 
        <groupId>slf4j-log4j12</groupId> 
        </exclusion> 
    </exclusions> 
    
  2. チェック:次に、あなたはこれでtransistive依存関係から除外します。一部の人は、 の愚かで悪いのための共通のJARの複製を作成します。 特別な目的は、Mavenを混乱させる可能性があります。特別に、あなたがorg.jboss.resteasy:slf4j-log4j12を代わりに取得していないかどうかを確認してください。あなたはこのように、Mavenの-執行-プラグインを使用して望ましくない依存関係を禁止することがあります。

    <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> 
    
+1

単純なmvn依存関係を実行する:ツリーは、推移的な依存関係を見つけて上記のようにjarを除外します。 – om39a

関連する問題