2012-04-10 8 views
7

を除外する私が依存関係を持っている:Mavenの依存関係:例えば一つのクラス

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.5.6</version> 
</dependency> 

私はたとえばorg/slf4j/Marker.classのために、1つのクラスを除外することはできますか?

+0

どのフェーズで '除外 ' - コンパイルまたはパッケージ? – Raghuram

+0

.earのパッケージ、maven-ear-pluginを使用 – Ilya

+1

hmm! .earに必要なのは、指定されたクラスを持たない 'slf4j-api.jar'です。これを達成するための直接的な方法はありません。 – Raghuram

答えて

8

はできないで単一のクラスを除くshade plugin

+1

私はここで詳細な回答を見たいと思います例 – gstackoverflow

3

でそれを試してみてください。 <dependency>タグ内では、<exclusions/>を定義できます。ただし、これは依存関係全体に対するものです。

シェードプラグインは注意して取り扱う必要があります。一般に、別のプロジェクトで生成された成果物を依存関係として使用する場合、問題につながる傾向があるため、すべての依存関係を1つの場所に格納するジャーを作成するのは良い方法ではありません。たとえば、あなたの瓶にslf4jを陰影付けし、別のslf4jを持っている別のプロジェクトのアーティファクトに応じて、あなたに悲しみをもたらします。

2

これらのクラスを変更して、別のjar /モジュールに定義することができます。より前に除外するクラスが存在するjarファイル(Marker.class)が含まれています。

Mavenはクラスパスの注文をバージョン2.0.9から覚えています。