0

Ivyは依存関係の依存関係を解決できます。ドキュメントには、モジュール構成を使用して、構成が依存関係の特定の構成に依存していることをivyに伝えることができると記載されています。

プロジェクトでhtmlunitを使用したいのですが、そのsourceforgeページの依存関係情報で依存関係の設定を見つけました。Mavenの仕様をivyに変換しました。

<dependency org="net.sourceforge.htmlunit" name="htmlunit" rev="2.11"/>

私はテストを書き、コンパイルし、実行しようとすると、ClassNotFoundExceptionが発生し、再びsourceforgeに戻って、htmlunitの依存関係に関する情報を探しました。このページで、探しているものを見つけたので、すべてを考えました。必要はモジュール構成の魔法を使用しているので、私は追加しました:

<dependency org="net.sourceforge.htmlunit" name="htmlunit" rev="2.11" conf="test->compile; test->test"/>

しかし、このエラーは、構成がnet.sourceforge.htmlunit#htmlunit; 2.11、'compile'に見つからなかったことを示しています。

4

1 に答える 1

2

コンパイル構成は存在します....

問題を再現しようとしたところ、次のエラー メッセージが表示されました。

[ivy:resolve]       ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve]       ::          UNRESOLVED DEPENDENCIES         ::
[ivy:resolve]       ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve]       :: net.sourceforge.htmlunit#htmlunit;2.11: 
    configuration not public in net.sourceforge.htmlunit#htmlunit;2.11: 'test'......

ivy が Maven モジュールを構成に変換するとき、推移的なテスト依存関係の解決を許可しない方法で変換します。

すべてのテスト依存関係が htmlunit モジュールのテストをサポートするように設計されているため、この推論にはいくつかの論理があります。モジュールは、独自のテスト依存関係を明示的に宣言する必要があります....

私が通常提案するのは、追加のjarを取得するために、「テスト」構成をリモートの「ランタイム」Mavenスコープにマップすることです。

<dependency org="net.sourceforge.htmlunit" 
            name="htmlunit" 
            rev="2.11" 
            conf="compile->default;test->runtime"/>

問題は、htmlunit モジュールに「実行時」の依存関係がないことです。つまり、これは何の助けにもなりません。

結論として、欠落しているクラスを示していません。junit のような明白なものである場合、これは ivy ファイルで明示的に宣言する必要があるものであることをお勧めします。

于 2013-02-28T23:47:18.607 に答える