2012-02-01 7 views
5

私のantファイルは非常に複雑なので、クラスパス要素をモジュール化したいと思います。antスクリプトのクラスパスのモジュール化(例えばrefid経由)

現在、私は次のようにrefidを使用します。

<path id="compile.classpath"> 
    <pathelement path="foo"/> 
    <!-- ... --> 
</path> 

<path id="test.classpath"> 
    <path refid="compile.classpath"/> 
    <pathelement path="bar"/> 
    <!-- ... --> 
</path> 

<!-- ... --> 

    <javac> 
     <classpath refid="compile.classpath"/> 
    </javac> 

    <junit> 
     <!-- ... --> 
     <classpath> 
      <path refid="test.classpath"/> 
      <path path="bazz"/> 
     </classpath> 
    </junit> 

<!-- ... --> 

これは賢明なアプローチですか?それとも良いことがありますか?

classpath-refid(<javac>)にpath-id(compile.classpath)を使用してもよろしいですか? (これは現在動作しますが、pathclasspathは、両方のパスのような構造であるので、同じタイプのものであると要素をrefid必要がない、彼らは同じタイプである?)

答えて

5

私は成功し、以前の仕事で、このアプローチを使用しましたそれは本当にすべてを正気に保つことができる唯一の方法でした。

最終的に私のサードパーティのライブラリ定義を別のext-libs.xmlファイルに入れました。そのうちのいくつかはマルチジャーライブラリであり、最終的なwarファイルに含まれていた巨大な手間になる。そういう意味で、私のメインのbuild.xml(と他の人たち)では、lib.jaxbを参照して、どこのファイル名でもバージョン番号を更新してもらう心配はありません。

コンパイルクラスパスを拡張してテストクラスパスを作成するというトリックをすでに理解しているので、正しい方向に進んでいます。

つまり、を押します。

+0

私のアプローチ(+1)を確認していただきありがとうございます。私はすべてのサードパーティのライブラリをどこにも含めたくないので、コンパイル.classpathとtest.classpathのようなパス要素でいくつかのグループ化を行いました。それらを結合して拡張することができます。それは動作します、私はちょうど私が逃したこれのためのいくつかの標準的な解決策があるかどうかはわかりませんでした。 – DaveFar

+0

標準であるかどうかはわかりませんが、それは私のために働いていました。 – Argyle

関連する問題