あなたの質問で言及されたディレクトリ構造を考えると、あなたの非テストコードのすべてがディレクトリにあるように聞こえますbb/app/lite2
。その場合、指定されたソースディレクトリの下に表示<copy>
される限り、次のようにタスクを記述できます。bb/app/lite2
<property name="source.dir" location="${basedir}/src" />
<property name="target.dir" location="${basedir}/target" />
<copy todir="${target.dir}" overwrite="true">
<fileset dir="${source.dir}" includes="bb/app/lite2/**/*.java" />
</copy>
ただし、次のように、テストファイルに命名規則を採用すると、包含<ClassName>Test.java
/除外パターンを記述できるようになります。
テストを除くすべてのソースをコピーする
<property name="source.dir" location="${basedir}/src" />
<property name="target.dir" location="${basedir}/target" />
<copy todir="${target.dir}" overwrite="true">
<fileset dir="${source.dir}"
includes="**/*.java" excludes="**/*Test.java" />
</copy>
<javac>
Antタスクはサポートincludes
と属性を備えているため、ソースファイルを新しいディレクトリにコピーするのexcludes
ではなく、非テストファイルを直接選択できます。
<javac>
Antのタスクincludes
とexcludes
属性を使用する
<property name="source.dir" location="${basedir}/src" />
<property name="classes.dir" location="${basedir}/build/classes" />
<javac srcdir="${source.dir}" destdir="${classes.dir}"
includes="**/*.java" excludes="**/*Test.java"
classpathref="my.classpath" debug="on" deprecation="on" />
David W.がコメントで述べたように、別の規則(ファイルの命名規則と組み合わせて使用される場合があります)は、テストコードを別のディレクトリに配置することです。例えば、
または、Mavenの規則に従います。
src/main/java
src/test/java
次に、包含/除外パターンを指定する必要がないため、非テストソースのコンパイルは簡単です。
<property name="source.dir" location="${basedir}/src/java" />
<property name="classes.dir" location="${basedir}/build/classes" />
<javac srcdir="${source.dir}" destdir="${classes.dir}"
classpathref="my.classpath" debug="on" deprecation="on" />
関連するstackoverflowの質問