私はIvy(http://ant.apache.org/ivy/)を学び、ビルドプロセスの一部として統合しています。かなりうまくいっていますが、Ivyの公開タスクで何かに行き詰まっています。具体的には、次のパターン(現在の構成の名前を含む)でローカルリポジトリに公開したいと思います。
$ {ivy.local.default.root} / [organisation] / [module] / [revision] / [type] s / [conf]/[artifact]。[ext]
そこで、カスタムリゾルバーを設定しました。
<filesystem name="modifiedLocalRepo">
<ivy pattern="${ivy.local.default.root}/[organisation]/[module]/[revision]/[type]s/[conf]/[artifact].[ext]" />
<artifact pattern="${ivy.local.default.root}/[organisation]/[module]/[revision]/[type]s/[conf]/[artifact].[ext]" />
</filesystem>
そして、公開タスクを構成しました。
<ivy:publish
settingsRef="ivy.ext.settings.custom" <!--Location of definition of modifiedLocalRepo-->
resolver="modifiedLocalRepo"
artifactspattern="bin/Debug/[module].[ext]"
pubrevision="1.1-Test"
overwrite="true"
conf="primary"
/>
そして、ivy.xmlファイルでconfを定義します。
<info organisation="Mine" module="Dependency"/>
<configurations defaultconf="primary"> <!--Don't think defaultconf should be necessary-->
<conf name="primary"/>
</configurations>
<publications>
<artifact name="Dependency" ext="dll" type="bin" conf="primary"/>
<artifact name="Dependency" ext="pdb" type="bin" conf="primary"/>
</publications>
プロセスが機能し、ivyが構成され、解決され、プロジェクトが構築され、アーティファクトが公開されました(上記のカスタムリゾルバーを使用)。ただし、[conf]トークンは常に「デフォルト」に解決されます。したがって、公開されたディレクトリの構造は次のとおりです。
\ .ivy2 \ local \ Mine \ Dependency \ 1.1-Test \ bins \ default \
構造の代わりに
\ .ivy2 \ local \ Mine \ Dependency \ 1.1-Test \ bins \ primary \
私はそれをいじくり回して、conf値、defaultconf値などを有効な場所に設定していますが、常に「デフォルト」です。
私はantを使用してビルドを実行しており、デバッグモード(-d)で実行し、出力を検査しましたが、何も役に立たないことに気づきました。<echoproperties \>の出力を調べたところ、何も役に立たなかった。Ivyのドキュメントを読みましたが、検索とレポートの出力でトークンとして[conf]が使用されていることがわかりました。
有用であれば、限定されたテストビルドを実行するために使用している完全なxmlファイルを添付できます。
[conf]トークンは、Ivyパブリッシングのアーティファクトパターンで有効/尊重されていますか?もしそうなら、私は何が欠けていますか?ありがとう!
更新: Ivy 2.3.0-rc2を使用していて、ロールバックしてIvy2.0.0を使用することにしました。同じ問題。