4

ivy で特定のフォルダー (lib など) に jar を取得したいのですが、以下は build.xml の取得定義です。

<ivy:retrieve pattern="lib/[artifact].[ext]" conf="webInfLib" />

そして、以下のような私のivy.xmlの定義:

<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"
       xmlns:m="http://ant.apache.org/ivy/maven">
    <info organisation="xxxx" module="xxxx" status="integration"/>
    <configurations>
        <conf name="webInfLib"  description="add jar to web-inf/lib folder"/>
    </configurations>
    <dependencies>
        <dependency org="org.springframework" name="spring-beans" rev="2.5.5" transitive="false" conf="webInfLib -> default"/>
        <dependency org="net.sf.json-lib" name="json-lib" rev="2.3"> 
            <artifact name="json-lib" type="jar" m:classifier="jdk15"/>
        </dependency>
    </dependencies>
</ivy-module>

しかし、それは常にスローします:

impossible to ivy retrieve: java.lang.RuntimeException: Multiple artifacts of the module xxxxxx are retrieved to the same file! Update the retrieve pattern  to fix this error.

同様の質問を読み、取得パターンをより複雑なものに変更するよう提案しています。「[artifact]-revision.[ext]」のようなものを試してみましたが、解決しません。そして、「ivy.resolve」を実行すると、問題なく動作します。この問題について何か提案はありますか?

4

1 に答える 1

4

検索パターンは本当の問題です。あなたはしようとしている

[artifact]-[revision].ext

したがって、任意の依存関係のために、バイナリ jar とソース jar の両方が同じ場所に書き込まれると思います。しかし、あなたが持っているケースにユニークなものを追加すると

[artifact]-[revision](-[classifier]).[ext]

ソースまたはドキュメントの場合、分類子には値があるため、別の名前になります。分類子がない場合 (バイナリ コンパイルされた jar の場合など)、分類子は存在せず、これは括弧 ( ) によって処理されます。

于 2013-01-09T09:05:34.050 に答える