2009-11-19 24 views
6

私はかなりの大きさのivy.xmlを持っていますが、多くのプロジェクトで同じ構成になっています。ivy.xmlにファイルを含めるには?

この大きな反復セクションを共通のインクルードファイルに分割したいと思います。何とか私はこれを行うことができることを記述する文書を見つけることができません。

これが実行可能かどうか考えている人はいますか?

編集:これ以上の考え方をして、これは意図的に実行できないと思います。 Ivyファイルは1つの結束単位であるため、ファイルベースの参照は含まず、他のivyモジュールへの参照のみが含まれている必要があります。

答えて

9

あなたが依存する、ツタメタモジュールを作成することができ

<?xml version="1.0"?> 
    <ivy-module version="2.0"> 
     <info organisation="com.example" module="common-libs"/> 
      <configurations> 
      <conf name="runtime" transitive="true" visibility="public" /> 
      <conf name="master" transitive="true" visibility="public" /> 
      <conf name="compile" transitive="true" visibility="public" /> 
      <conf name="default" transitive="true" visibility="public" extends="master" /> 
      </configurations> 
      <dependencies> 
       <dependency org="oracle" name="ojdbc14_g" rev="10.2.0.3" 
conf="compile->compile(*),master(*);runtime->runtime(*);master->master(*)"/> 
       <dependency org="tomcat" name="servlet-api" rev="6.0.16" 
conf="compile->compile(*),master(*);runtime->runtime(*);master->master(*)"/> 
       <dependency org="junit" name="junit" rev="4.3" 
conf="compile->compile(*),master(*);runtime->runtime(*);master->master(*)"/> 
      </dependencies> 
    </ivy-module> 

、典型的なプロジェクトのために:

<?xml version="1.0"?> 
    <ivy-module version="2.0"> 
    <info organisation="com.example" module="myproject"/> 
     <configurations> 
     <conf name="runtime" transitive="true" visibility="public" /> 
     <conf name="master" transitive="true" visibility="public" extends="runtime"/> 
     <conf name="compile" transitive="true" visibility="public" /> 
     <conf name="default" transitive="true" visibility="public" extends="master" /> 
     </configurations> 
     <dependencies> 
     <dependency org="com.example" name="common-libs" rev="latest.release" 
      conf="compile->compile(*),master(*);runtime->runtime(*);master->master(*)"/> 
     </dependencies> 
    </ivy-module> 
それらの共通のパッケージのすべて、およびすべての他のプロジェクトは、推移的依存関係を介して共通のライブラリを解決していたとき

ここでは、MavenリゾルバのPOM-> Ivy変換から伝統的なコンフィギュレーション命名規則を使用していますが、あなたに合った方法でコンフィギュレーション名をマップすることができます。私はIvyリポジトリにMavenモジュールをコピーするためにivy:installタスクを使用する傾向があるので、ほとんどの場合、デフォルトのivy.xmlを使用します。 IvyRoundupを使用している場合、主に「デフォルト」の設定を推移的にマップしたいと思うでしょう。

2

Antのアイビーを使用していて、Ant 1.6以降を使用している場合は、 <import>あなたのantビルドファイル内にビルドファイルの断片を含めるタスク。参照ファイルは、しかし、完全なAntビルドファイルである必要があります:

<?xml version="1.0"?> 
<!DOCTYPE project [ 
     <!ENTITY common SYSTEM "common.xml"> 
]> 
<project name="my-project" default="usage" basedir="."> 
    <target name="setup"> 
    ... 
    </target> 

    &common; 
    ...  
</project> 

これはcommon.xmlの内容が含ま文字通ります:

<?xml version="1.0"?> 
<project name="my-project" default="usage" basedir="."> 
    <target name="setup"> 
    ... 
    </target> 

    <import file="./common.xml"/> 
    ... 
</project> 

あなたはまた、あなたのivy.xmlbuild.xmlファイル内から標準のXML構文を使用することができますあなたが&common;エンティティを配置した場所

(この例ではファイル名common.xmlはXMLパーサーによって含むXMLファイルに関連して解決される。あなたはまた、絶対file:プロトコルURIを使用してもよい。)

関連する問題