ソースがsrc/ツリー(および場合によってはtest /ツリー)にあるとします。そのツリーの一部だけをコンパイルしたいとします。私がそれをやりたいと思う理由はさまざまです。例として、(特定のクラスを含めずに)可能な限り最小のjarを作成したい場合や、コンパイル対象のコンパイル時間を最速にしたい場合があります。しかし、私は絶対にすべての依存関係をコンパイルしたいです!
これは、次のコマンドラインから簡単に実行できます。
javac -d build/ -cp whatever -sourcepath src src/path/to/MyClass.java
さて、どうやってアリでそれをすることができますか?javac antタスクはすべてをコンパイルします:
ソースディレクトリと宛先ディレクトリは、コンパイルするJavaソースファイルを再帰的にスキャンします。
excludes
およびパラメータを使用できますincludes
が、この目的には問題があります。実際、includes
(自動依存関係ルックアップではなく)すべてを明示的に設定する必要があるようです。最悪の場合でも、除外するものが優先されます。
包含と除外の両方が使用される場合、少なくとも1つの包含パターンに一致し、どの除外パターンにも一致しないファイル/ディレクトリのみが使用されます。
したがって、使用することはできません
<javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="classpath"
excludes="**/*.java" includes="src/path/to/MyClass.java" />
何もコンパイルしないので:-(
javac
antでその単純なコマンドラインを実現する方法はありますか?
編集:あなたの答えをありがとう、Sadie、私はそれを受け入れています、なぜならそれは私がこの質問で思っていたように機能するからです。しかし、私はいくつかのコメントを持っています(あなたの答えのコメントフィールドに入るには長すぎます):
1)私はドキュメントを読みました(上記のリンクを参照)が、includes
あなただけで実際に他のすべてを除外しているのかどうかは不明です
2)あなたがちょうどincludes
antログのようなものをするとき
[javac] Compiling 1 source file to /my/path/to/build
依存関係によって、(多くの)複数のソースファイルをコンパイルする場合でも。