2012-01-17 19 views
3

EclipseプロジェクトをIvyと、オフィス内のWebサーバー上のアーティファクトとアイビーファイルを探すURLリゾルバで設定しました。すべてが美しく動作します。ローカルで解決するためにIvyを使用する方法

私は他のプロジェクトの依存関係であるプロジェクトがいくつかあります。これらの依存関係を「ローカルに公開」できるようにIvy設定を調整し、それに依存するダウンストリームプロジェクトがローカルで解決できるようにしたいと思います。そうすることで、開発者はあるプロジェクトで変更を加えることができ、それらの変更がそれに依存する別のプロジェクトで波及するのを見ることができます。すべて公式(ウェブサーバー)リポジトリに公開する必要はありません。

まず私は、下流のプロジェクトの依存関係であるプロジェクト(のはDepProjそれを呼びましょう)に公開 - ローカルタスクを追加しました:その後、私はDepProjのいずれかのivy.xmlファイルを修正

<target name="publish-locally" depends="clean,dist"> 
    <ivy:publish resolver="local" overwrite="true" pubrevision="${ivy.new.revision}"> 
     <artifacts pattern="${distDir}/[artifact].[ext]" /> 
</ivy:publish> 
</target> 

川下のプロジェクト、DownstreamProj

<dependency org="ourOrg" name="DepProj" rev="latest.integration" conf="*->*"/> 

私は今、2つの接続を窒息しています。ファイルシステムリゾルバを使うには、ivy.settingsファイルを調整する必要があります。 DepProjがローカルにパブリッシュされると、最初にclean、次にdistが実行されていることがわかります。 distターゲットは、DepProj/dist/DepProj.jarの下にJARを作成します。

私はファイルシステムリゾルバ(何らかの形で)をdistというディレクトリに向ける必要があると思いますか?しかし、再びDepProjは私がローカルで公開したい唯一のプロジェクトではありません。

私はここにパズルの大部分を持っています。私はちょうどいくつかのドットを接続するのに問題があります。

いくつかの種類のSOERは適切な方向に私を微調整できますか?有益なコード例は、常に非常に高く評価されています!ありがとう!

答えて

4

あなたは間違いなくfile system resolverを定義し、独自のivysettings.xmlを作成する必要があります。

公開できる特別なディレクトリを指定する必要があります。これはあなたのプロジェクトの外のどこかにあるべきです。

<filesystem name="local" checkmodified="true"> 
     <ivy pattern="${basedir}/../repo/[module](-[branch])/[revision]/[artifact](-[branch])-[revision].[ext]" /> 
     <artifact pattern="${basedir}/../[module]/[revision]/[artifact](-[branch])-[revision].[ext]" /> 
    </filesystem> 

これは完全に通常のリポジトリのように動作します。解決アーティファクトはあなたのキャッシュにコピーされ、そこからあなたの検索場所にコピーされます。

公開されているアーティファクトがコピーされます。これは、呼び出しによって自動的に読み込まれます

<property name="ivy.settings.file" value="${path_to_file}/ivysettings.xml"/> 

:設定をアクティブに

<ivy:settings /> 

あなたがivysettings.xmlへのパスを設定することができます。

ます。また、リポジトリ内の最初のファイルシステムでは、その後に見える、特別なモジュールのチェーンを作成することができます日食のための

<resolvers> 
    <url name="remote"/> 
    <filesystem name="local" checkmodified="true" /> 

    <chain name="ourOrg" dual="true" latest="time"> 
     <resolver ref="local"/> 
     <resolver ref="remote"/> 
    </chain>  
</resolvers> 

    <modules> 
    <!-- resolver für readybank module--> 
    <module organisation="ourOrg" resolver="ourOrg"/> 
    </modules> 

IvyDeがある任意のプロジェクトのための素晴らしい作品のワークスペース・リゾルバを、持っています日食で開く。

+0

ありがとうございました! – IAmYourFaja

+1

これはマルチプロジェクトビルドの例です.Ipyソースリポジトリにあります:https://svn.apache.org/repos/asf/ant/ivy/core/trunk/src/example/multi-project/ –

関連する問題