2012-11-26 13 views
5

私は、私のpomにAとBという2つの依存関係を持っています。AとBの両方ともアーティファクトC(cassandra-all)に推移的な依存関係があります。 AとBはCの差分バージョンを使用します。依存関係Aはアーティファクトですastyanaxです。私はC.特定のスコープの依存関係のみを除外する方法は?

のために、私は(アステュアナクス)で除外を追加することによって達成B.に付属しているCのバージョンを維持したい

残念ながら、私はBの範囲は、「試験」になりたいです。これは、Aで除外されると、Cはテストスコープの外には含まれないことを意味します。

どうすれば解決できますか?除外は特定のスコープに対してのみ可能ですか?代わりに、過渡的な依存関係に使用するバージョンを指定することはできますか?


例:ここでは
は私のポンポンは次のようになります。

アーティファクトA(アステュアナクス)アーティファクトC(カサンドラ-すべてと呼ばれる)

<dependency> 
     <groupId>com.netflix.astyanax</groupId> 
     <artifactId>astyanax</artifactId> 
     <version>1.0.4</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.apache.cassandra</groupId> 
       <artifactId>cassandra-all</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>org.cassandraunit</groupId> 
     <artifactId>cassandra-unit</artifactId> 
     <version>1.1.1.1</version> 
     <scope>test</scope> 
    </dependency> 
への依存を排除​​しながら

具体的には:テストスコープの外でコードを実行しても、キャンドルラーテストだけの範囲を保持している場合、どのようにしてcassandraを含めることができますか?

+0

の可能性のある重複した[テストのためのMavenの依存関係を除外する] (https://stackoverflow.com/questions/12053316/exclude-maven-dependency-for-tests) – Andremoniy

答えて

4

私の質問は、それがされている可能性がほど明確ではなかった場合、私はお詫び申し上げます。私はこれを解決する方法はまったく難しくありませんでした。私は私のポンポンでC用に別の依存関係を追加

  • 私は具体的には、ここで

に、私はちょうどCの除外を保持

  • 追加されました:

    <dependency> 
         <groupId>org.apache.cassandra</groupId> 
         <artifactId>cassandra-all</artifactId> 
         <version>1.1.5</version> 
        </dependency> 
    

    実行時に欠落していた以下の依存関係。だから、

    <dependency> 
         <groupId>commons-lang</groupId> 
         <artifactId>commons-lang</artifactId> 
         <version>2.6</version> 
        </dependency> 
    
    0

    私はすべてを理解しているかどうかはわかりませんが、いずれにしてもプロファイルでこれを達成できるはずです。あなたのポンポンで

    、あなたがたに応じて、実行時にはA.

    を排除して依存関係を持っていますここでBとプロファイルBを排除して、あなたの依存関係Aを追加したプロファイルAを作成しますあなたが選択したプロファイルのどちらか一方が含まれます。

    HIH

    0

    具体的に:私は、テスト範囲の外でコードを実行すると、まだのみcassandraunitテストの範囲を維持する場合どのように私はカサンドラ-すべて含めることができますか?

    Use Maven POM to configure surefire-maven-pluginchange your classpath。何がしたいことは、あなたのテストを実行しながら、cassandra-all依存関係をクラスパスから削除されるだけということであれば、以下のPOMのスニペットはトリッキーになるだろう

    <build> 
        <!-- ... --> 
    
        <plugins> 
        <!-- ... --> 
    
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-surefire-plugin</artifactId> 
         <configuration> 
         <classpathDependencyExcludes> 
          <classpathDependencyExcludes> 
          org.apache.cassandra:cassandra-all 
          </classpathDependencyExcludes> 
         </classpathDependencyExcludes> 
         </configuration> 
        </plugin> 
        </plugins> 
    </build> 
    
    関連する問題