2012-01-24 4 views
2

fooに依存するfoo-instrumentedプロジェクトがあります。織物用のスコープ

このプロジェクトは実際にはfooに追加コードを追加して置き換えます。それは(foo-instrumentedfooを置き換える)foofoo-instrumentedのコンパイル時の依存関係ですが、それは間違いなく、実行時の依存関係ではない、であり、それは子供たちに伝播すべきではない(つまり、foo-instrumentedに応じて、プロジェクトがは終わるべきではありませんfooに応じて)。

この種の依存関係には適切な範囲がありますか、それとも別の解決策ですか?

編集:私は私の要求に十分に明確されていないのです:fooは子供のプロジェクトの依存関係で終わるべきではないものの、fooの依存関係がなければならない(例えばfoofoo-instrumentedに依存したプロジェクト、その後、log4jに依存している場合依存関係の一部としてlog4jを持つ必要があります)、これはprovidedの範囲を除外しているようです。

ありがとうございます!

編集:わかりました。私はここで少し暴言をしている必要があります:本当に、実際の人間は本当にメイクドックを理解していますか?私はいくつかを見ていたpagesと何を推測する:何の説明も、イラスト、ちょうどXML VOMITのトン。 XML VOMITはドキュメントではありません、人々!

答えて

1

依存関係を除外することはできませんが、依然として依存関係は含めます。 しかし、インストールされていない依存関係の除外を定義し、依存関係を他のモジュールに追加することができます(再度)。あなたはfoo-instrumentedに依存関係を定義すると、実行します。あなたがimportスコープを使用する必要があります

<dependencies> 
    <dependency> 
     <groupId>bar</groupId> 
     <artifactId>foo-instrumented</artifactId> 
     <exclusions> 
      <exclusion> 
       <groupId>bar</groupId> 
       <!-- Exclude the non-instrumented dependency: --> 
       <artifactId>foo</artifactId> 
      </exclusion> 
     </exclusions> 
    <dependency> 

    <!-- Add the dependencies you need for foo to work here --> 
<dependencies> 
+0

これは私が現在やっていることですが、それほどエレガントではありません。 – Rom1

+0

私はより良い方法がないと恐れています。 – carlspring

2

。あなたのfoo計装プロジェクトで:

<dependencies> 
    <dependency> 
     <groupId>bar</groupId> 
     <artifactId>foo</artifactId> 
     <type>pom</type> 
     <scope>import</scope> 
    <dependency> 
<dependencies> 

また、これはFOO FOOを含めずに、インストルメントへのfooの依存関係を引っ張ってきます。

+0

これはもっとも有望な答えですが、私はそれを動作させることはできませんでした(まだコンパイル/ウィービング時に依存関係を引き出す必要があります) – Rom1

+0

@ Rom1 - fooをコンパイル時の依存関係として引き出す必要もあります(scope->コンパイル、タイプ要素なし)。それでも動作しない場合は、foo-instrumentedのためのpom.xmlを投稿できますか? – mtpettyp

+0

私はpomファイルを投稿したくないですが、ここではインポート依存関係を宣言した後に警告が表示されます: [警告]ビルド設定エラー:欠落、空または壊れたinpathエントリのスキップ:/home/me/.m2 /repository/bar/foo/0.1.0-SNAPSHOT/foo-0.1.0-SNAPSHOT.pom – Rom1

関連する問題