0

Ivy キャッシュから lib フォルダーに jar を取得する必要がありました。以下は ivy.xml コードです。

    <configurations>
        <conf name="specificFolder"  description="add jar to web-inf/lib folder"/>
    </configurations>
    <dependencies>
        <dependency org="javax.servlet" name="servlet-api" rev="2.4" transitive="false" conf="specificFolder"/>
        <dependency org="org.springframework" name="spring-beans" rev="2.5.5" transitive="false" />
        <dependency org="org.springframework" name="spring-webmvc" rev="2.5.5" transitive="false" />
        <dependency org="org.springframework" name="spring-web" rev="2.5.5" transitive="false" />
        <dependency org="org.springframework" name="spring-context" rev="2.5.5" transitive="false" />
        <dependency org="org.springframework" name="spring" rev="1.2.6" transitive="false" />

次に、これはアリのターゲットです:

<target name="test">
    <ivy:retrieve pattern="lib/[artifact](.[ext])" sync="true" type="jar" conf="specificFolder"/>
</target>

しかし、「未解決の依存関係」があります。これは私が間違っていることですか?

4

1 に答える 1

2

私はあなたの問題を再現しました、そしてここに関連するエラーメッセージがあります:

[ivy:resolve]       ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve]       ::          UNRESOLVED DEPENDENCIES         ::
[ivy:resolve]       ::::::::::::::::::::::::::::::::::::::::::::::
[ivy:resolve]       :: javax.servlet#servlet-api;2.4: configuration not found in javax.servlet#servlet-api;2.4: 'specificFolder'. It was required from com.myspotontheweb#demo;????? specificFolder
[ivy:resolve]       ::::::::::::::::::::::::::::::::::::::::::::::

根本的な原因は、次の依存関係の宣言です。

<dependency org="javax.servlet" name="servlet-api" ... conf="specificFolder"/>

構成はモジュールに存在しますが、リモートMavenモジュールには存在しません。次の回答を参照する方法の詳細については、次を参照してください。

実例

ivy.xml

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

    <configurations>
        <conf name="specificFolder"  description="add jar to web-inf/lib folder"/>
    </configurations>
    <dependencies>
        <dependency org="javax.servlet" name="servlet-api" rev="2.4"            conf="specificFolder->master"/>
        <dependency org="org.springframework" name="spring-beans" rev="2.5.5"   conf="specificFolder->master"/>
        <dependency org="org.springframework" name="spring-webmvc" rev="2.5.5"  conf="specificFolder->master"/>
        <dependency org="org.springframework" name="spring-web" rev="2.5.5"     conf="specificFolder->master"/>
        <dependency org="org.springframework" name="spring-context" rev="2.5.5" conf="specificFolder->master"/>
        <dependency org="org.springframework" name="spring" rev="1.2.6"         conf="specificFolder->master"/>
    </dependencies>

</ivy-module>

ノート:

  • この例では、「transitive=false」の代わりに構成マッピングを使用しています。ローカル構成は「specificFolder」であり、リモート構成は特別な「マスター」です。「マスター」はMavenモジュールによって提供され、依存関係のないリモートアーティファクトを意味します。構成がどのように機能するかを理解すれば、このアプローチはより簡単になると思います。(Mavenの非常に強力なコンセプト)
  • ツタの依存関係セクションの小さな矢印->は何をしますか?
于 2013-01-10T21:41:11.253 に答える