2012-01-14 25 views
6

私たちは数ヶ月間Ivyを使用していて、オフィス内のWebサーバー上に私たち自身のホストした "Ivy Repo"を持っています。すべてのプロジェクトは、依存関係を解決するためにこのリポジトリに移動するように設定されています。Ivy:ローカルでのJARの解決と公開

多くのプロジェクトで使用されている「コモンズ」タイプのJARがいくつかあります。このため、我々は唯一の1つのレポを持っているので、我々は次のような状況から来る醜いオーバーヘッドをたくさん見つけている:

  • 開発者がオンに依存する(プロジェクト1に機能を追加するためのタスクを与えられ、プロジェクト1の開発の過程で、開発者は、彼/彼女が
  • 共通jarファイルの変更が
  • 共通のjarは、コードレビューとノーマルを通過しなければならない作られています一般的なjarファイルに変更を加える必要が実現共通のjar)
  • コードプロモーション
  • ビルドマスターが新しい共通jarを公開
  • プロジェクト1は、今では一般的なjarファイルはこれが私たちのチームのためにとんでもないと苦痛になってきている

更新された開発を再開することができます。

私にとって、明らかな解決策は、開発者が(ファイルシステムへの、またはファイルシステムからの)ローカルでの公開/解決を可能にする、各プロジェクトにantターゲットを提供することです。そうすることで、コモンが公開されるのを待つ間に、コモンジャーを日曜日に9つの方法で破ることができますが、2 - 4日間を失うことはありません。こうすることで、開発者はProject 1とCommonの両方をローカルで変更し、コードは一度にすべてのプロモーションプロセスを実行します。

私はこれがアイビーで可能だと知っていますが、私はとても新しいので、どこから始めるべきか分からないでしょう。

現在、すべてのプロジェクトにグローバルivy.settingsファイルが使用されています。設定ファイルでは、内部に1つのURLリゾルバがあり、 "ivy repo"に接続するchain resolveを使用します。

私は次が必要になる唯一の変更ですが、私は100%確実ではないよ信じる

我々は前に、ローカルファイルシステムのリゾルバ を追加する必要がありますivy.settings
  • urlリゾルバが呼び出されます。私たちはツタのレポ(Webサーバ)に移動する前に依存関係のためのローカルファイルシステムをチェックし、このよう
  • を設定し、各プロジェクトのivy.xml何とかそれは
  • を公開し、ローカルキャッシュはAntがそのpublish-locally目標を持つように構築する微調整できるオプションとは(1)常に(2)ビルドオプション(ターゲット)としてローカルに公開する、Webサーバーに見る前に依存関係をローカルで探す:

上記のオプションは、私がこれらの変更は、私たちができるようになりますと信じてい行使する。

これが当てはまらない場合や、手順が不足している場合は、お助言ください!そうでなければ、Ivyのドキュメントからファイルシステムリゾルバを追加する方法を考え出すことができますが、publish-locallyターゲットを動作させる方法がわかりません。何か案は?前もって感謝します!

答えて

2

アイビーは、動的なリビジョンをサポートしています。

コモンズジャーの最新承認バージョンを参照します

安定コード:

<dependency org="my-org" name="commons" rev="latest.release"/> 
コードの最新承認されていないバージョンを参照します

不安定(開発中)コード

<dependency org="my-org" name="commons" rev="latest.integration"/> 

したがって、公開モジュールが2つの公開ターゲットを持つようにビルドプロセスを変更する必要があります。 1つはコードの不安定なスナップショット、もう1つは正式リリース用です。

(アイビーpublishタスクのステータス属性を参照してください)

注:Mavenので リポジトリ、リリースおよびスナップショットの2種類があります。このコンセプトのアイビーサポートは、より微妙で強力なIMHOです。

2

私はMarksアプローチも好きです。

publish-locallyについては、どのリゾルバ(resolver="local")を使用するかを公開タスクに伝えることができます。こうすることで、ローカルのファイルシステムまたは定義されたリゾルバにパブリッシュできます。

<ivy:publish 
     resolver="local" 
     overwrite="true" 
     revision="${project.version}"> 
     <artifacts pattern="dist/[artifact]-[revision].[type]" /> 
    </ivy:publish> 

そして、あなたはチェーンリゾルバを使用している場合、何かがローカルで発見された際に解決することを停止するように、あなたはreturnFirst="true"を設定する必要があります。

関連する問題