2012-01-03 4 views
4

で、私のアーティファクトを見つけることができません。私は私のローカルファイルシステムにアーティファクトを持っているが、私は<チェーン>内<ファイルシステム>リゾルバを入れない限り、アイビーは、それを解決しません。また、アーティファクト拡張を解決するときにアーティファクト拡張の名前を変更します。ここでアイビーは、ファイルシステム

は私のivy.xmlです:

<ivy-module version="2.0"> 
    <info organisation="apache" module="hello-ivy"/> 
    <dependencies> 
     <dependency org="myorg" name="mymodule" rev="1.1-SNAPSHOT"/> 
    </dependencies> 
</ivy-module> 

そして、ここでは私のivysettings.xmlです:

<ivysettings> 
    <settings /> 

    <resolvers> 
     <filesystem name="local"> 
     <artifact pattern="/path/to/my/artifact/[module]/dist/[module]-[revision].zip" /> 
     </filesystem> 
    </resolvers> 
</ivysettings> 

私のbuild.xml:

<project xmlns:ivy="antlib:org.apache.ivy.ant" name="hello-ivy" default="deps"> 

    <target name="deps" description="--> retrieve dependencies with ivy"> 
    <ivy:settings file="ivysettings.xml"/> 
    <ivy:resolve /> 
    <ivy:retrieve /> 
    </target> 
</project> 

アーティファクトが.zipファイルであります。それは正しい場所にありますし、正しい名前(<アーティファクト>のパターン属性に応じてしかし、私はアリを実行すると、それはアーティファクトを解決するために失敗します。

[ivy:resolve] :::: WARNINGS 
[ivy:resolve]  :::::::::::::::::::::::::::::::::::::::::::::: 
[ivy:resolve]  ::   UNRESOLVED DEPENDENCIES   :: 
[ivy:resolve]  :::::::::::::::::::::::::::::::::::::::::::::: 
[ivy:resolve]  :: myorg#mymodule;1.1-SNAPSHOT: no resolver found for myorg#mymodule: check your configuration 
[ivy:resolve]  :::::::::::::::::::::::::::::::::::::::::::::: 
[ivy:resolve] :::: ERRORS 
[ivy:resolve] unknown resolver null 
[ivy:resolve] no resolver found for myorg#mymodule: check your configuration 

なぜそれが私のモジュールを見つけることができませんか?

はその後:私は<チェーン>要素内<ファイルシステム>要素を置けば、それは解決します。

[ivy:resolve] found myorg#mymodule;1.1-SNAPSHOT in local 
[ivy:resolve] downloading /path/to/my/artifact/mymodule/dist/mymodule-1.1-SNAPSHOT.zip 
[ivy:resolve] ..................(lots of dots here).....(37899kB) 
[ivy:resolve] [SUCCESSFUL ] myorg#mymodule;1.1-SNAPSHOT!mymodule.jar (430ms) 

だからそれは奇妙だなぜディ。 d <チェーン>違いがありますか? そしてBTW、なぜ私のモジュールは今JARですか?ソースはZIPファイルですが、私は誓います。それは正しいものです - 私はZIPを再構築したばかりです。最新の変更はJARファイルにあります。なぜIvyは名前を変更したのですか?

答えて

8

デフォルトtype of an artifact in ivy is jar and the default extension is jar, too. これは名前の変更につながります。

あなたが(明示的アーティファクトを定義)このようなあなたの依存関係を定義する必要があります。

<dependency org="myorg" name="mymodule" rev="1.1-SNAPSHOT"> 
    <artifact name="mymodule" type="zip" conf="A,B"/> 
</dependency> 

しかし、あなたが正しくファイルシステムのリゾルバを定義する必要があります。

<filesystem name="local"> 
    <artifact pattern="/path/to/my/artifact/[module]/dist/[module]-[revision].[ext]" /> 
    </filesystem> 

最善のアプローチを定義することですあなたの特別な依存関係のための適切なivy.xmlは、利用可能なアーティファクトを明確に定義します。これをあなたのdistフォルダに入れてください。

参照:

そして、多くの場合、ツタをデバッグするときant -vでantを実行することをお勧めします。これは素晴らしい追加情報を与えるでしょう。

+1

私のZIPがJARになった理由を説明してくれてありがとうございます。私が要素をそこに置くと、私はZIPを取得します。他の部分についての考え方、つまり要素が必要な理由 – Ladlestein

+1

@ladlesteinいいえ、それなしで動作するはずです。新しい設定でもう一度試しましたか? – oers

+1

@ladlesteinチェーンリゾルバを避けるには、* settings *タグで** defaultResolver = "local" **属性を指定してみてください:http://ant.apache。org/ivy/history/latest-milestone/settings/settings.html –

関連する問題