1

私は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を使用することにしました。同じ問題。

4

1 に答える 1

0

githubで私の Ivy プロジェクトを見てください。セットアップしたので、既存の Ant プロジェクトに簡単に追加できます。

私たちは Maven リポジトリを使用しているので、セットアップして を作成しpom.xml、それを使用mvn deploy:deploy-fileして Maven リポジトリにデプロイします。ビルドには Jenkins を使用しているため、Jenkins を使用mvn deploy-fileしてデプロイを実行します。を使用できると思います<ivy:publish>が、実際に試したことはありません。

于 2012-12-06T19:57:04.417 に答える