2011-06-29 15 views
0

一つoauth.signpostアーティファクトを必要とするので、私は私のpom.xmlにこのようなものを持っている:main依存関係を「コンパイル」として、サブ依存関係を「提供」としてマークする方法はありますか?私のAndroidプロジェクトの

... 
<dependency> 
    <groupId>oauth.signpost</groupId> 
    <artifactId>signpost-core</artifactId> 
    <version>1.2.1.1</version> 
    <scope>compile</scope> 
</dependency> 
... 

問題は、これは例えば、より多くの成果物に依存していることである:org.apache.httpcomponents:httpclient:4.0.1。問題は、Androidがすでにそのパッケージを提供しているため、ビルドプロセスがクラッシュすることです。

だから、私は通常、やっていることのIntelliJの依存関係の設定に起こっている、手動で代わりのを提供してをコンパイルしたもの冗長アーティファクトをマーク:

intellij dependencies

このプロセスだけではなく、迷惑です私は多くのMavenの依存関係を持っているので、またIntelliJ が忘れた場合はのような依存関係があるため、としてを提供し、すべてがコンパイル

私が見る唯一の解決策は、依存関係がである、pom.xmlで、指定することですがを提供しているをコンパイルしています。しかし、それらの多くがあるので、それは時間がかかるでしょう(また、私は手作業で、各アーティファクトなどのために必要なバージョンを手動で確認する必要があります)。

だから、それはをコンパイルとしてメインの依存関係を維持しながら、Mavenのはを提供とサブの依存性をマークするために伝えるための方法ですか?

+0

私はのpom.xmlで_provided_としてそれらを指定せずにこれを行う方法はないと思います。あなたは一度それを行う必要があります。 – CoolBeans

答えて

2

依存関係の除外を追加するオプションがあります。

は、次のことを考えてみましょう:

  • のは、次の2つのプロジェクトがあるとしましょう - バーやFOOを。
  • バーはlog4jに依存します。
  • fooがlog4jの別のバージョンに依存するようにしたいとします。

これは、fooモジュールの中にあなたのpom.xml次のようになります。

<project> 
    <groupId>kung.fu</groupId> 
    <artifactId>foo</artifactId> 
    ... 
    <dependencies> 
    <dependency> 
     <groupId>kung.fu</groupId> 
     <artifactId>bar</artifactId> 
     <version>1.0</version> 
     <scope>compile</scope> 
     <exclusions> 
     <exclusion> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
     </exclusion> 
     </exclusions> 
    </dependency> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.3</version> 
    </dependency> 
    </dependencies> 
</project> 
関連する問題