1

スタートガイドに従ってプロジェクトを立ち上げました。私はツタを使わなければなりません。これらは私の依存関係です:

    <dependencies>
    <dependency org="org.jboss.spec" name="jboss-javaee-all-6.0" rev="3.0.1.Final" conf="build->default" />

    <dependency org="org.jboss.arquillian.junit" name="arquillian-junit-container" rev="1.0.3.Final"  conf="test->default(*)" transitive="true"/>
    <dependency org="org.jboss.arquillian.junit" name="arquillian-junit-core" rev="1.0.3.Final"  conf="test->default(*)" transitive="true"/>

    <dependency org="org.jboss.weld.arquillian.container" name="arquillian-weld-ee-embedded-1.1" rev="1.1.2.Final" conf="test->default(*)" />
    <dependency org="org.jboss.weld" name="weld-core" rev="1.1.10.Final" conf="test->default(*)" />
    <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.6.4" conf="test->default(*)" />


</dependencies>

問題:「*」にマップしましたが、他動詞は解決されません。ツタに悩まされているからといって、すべての瓶を手作業で追加する必要がありますか?または私は何かが欠けていますか?

明確化:

マッピング「myconf->default()」transitive="true"を使用します。私はこれを次のように読みました:「依存関係のデフォルトのconfを取得し、それを「myconf」にマップします。():依存関係が「default」を提供しない場合は、提供するすべてのconfを使用します。これはすべて推移的に行う必要があります。すべてのサブ依存関係もマップされます。

しかし、私が得たのは、指定されたjarだけであり、テストを実行すると多くのCNFEが発生します。Mavenプロジェクトで参照されているarquillian-containerpomについて読みましたが、ツタとarquillianの「すぐに使える」依存関係マッピングメカニズムが機能しないのではないかと心配し始めています。誰かがこれを確認したり、私が使用できる(最良の:テスト済みの)依存関係構成を提供したりできれば幸いです。どうもありがとうございます!

4

1 に答える 1

0

ivyファイルは常に一連の構成を宣言することをお勧めします。構成は、ビルド内のjarの論理グループです。

次の例では、一般的なJavaビルドで使用される3つのクラスパスの構成を作成します。

  • コンパイル
  • ランタイム
  • テスト

(「extends」キーワードにも注意してください)

<ivy-module version="2.0">
    <info organisation="com.myspotontheweb" module="demo"/>

    <configurations>
        <conf name="compile" description="Required to compile application"/>
        <conf name="runtime" description="Additional run-time dependencies" extends="compile"/>
        <conf name="test"    description="Required for test only" extends="runtime"/>
    </configurations>

    <dependencies>
        <!-- compile dependencies -->
        <dependency org="org.jboss.spec" name="jboss-javaee-all-6.0" rev="3.0.1.Final" conf="compile->default" />

        <!-- test dependencies -->
        <dependency org="org.jboss.arquillian.junit" name="arquillian-junit-container" rev="1.0.3.Final"  conf="test->default"/>
        <dependency org="org.jboss.arquillian.junit" name="arquillian-junit-core" rev="1.0.3.Final"  conf="test->default"/>
        <dependency org="org.jboss.weld.arquillian.container" name="arquillian-weld-ee-embedded-1.1" rev="1.1.2.Final" conf="test->default" />
        <dependency org="org.jboss.weld" name="weld-core" rev="1.1.10.Final" conf="test->default" />
        <dependency org="org.slf4j" name="slf4j-log4j12" rev="1.6.4" conf="test->default" />
    </dependencies>

</ivy-module>

次に、構成マッピングは、次のようにローカル構成をリモート構成にマップします。

conf="compile->default"

通常、リモートの「デフォルト」構成が必要なすべてであり、リモートモジュールのコンパイル依存関係が含まれます。Mavenモジュールがどのように変換されるかについてのより詳細な説明については、次の回答を読むことをお勧めします。

最後に、ビルドファイルはこれらの構成を使用して、入力されたANTクラスパスを作成できます。

<target name="init" description="Use ivy to resolve classpaths">
    <ivy:resolve/>

    <ivy:report todir='build/ivy' graph='false' xml='false'/>

    <ivy:cachepath pathid="compile.path" conf="compile"/>
    <ivy:cachepath pathid="runtime.path" conf="runtime"/>
    <ivy:cachepath pathid="test.path"    conf="test"/>
</target>

「レポート」タスクは、クラスパス上の各jarのバージョンを文書化する場合に特に役立ちます。

于 2012-11-21T21:27:17.590 に答える