[英]How to exclude particular java folders and java files using ANT Build
[英]Ant - How to exclude Java test files?
我想將Java代碼從源文件夾復制到目標文件夾並進行編譯,但是需要排除一些測試代碼。 如何只復制非測試代碼? 例如,我要包含bb/app/lite2
並排除bb/app/test1
, bb/app/cg
,...
我知道我可以使用exclude元素,但是我不想編寫那么多的exclude模式。 所以我可以使用:
<exclude name="bb/app/**">
,然后使用<include name="bb/app/lite2">
嗎?
給定問題中提到的目錄結構,聽起來所有非測試代碼都在目錄bb/app/lite2
。 在這種情況下,只要bb/app/lite2
出現在指定的源目錄下,就可以編寫如下的<copy>
任務:
<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.在其評論中提到的,另一種約定(可以與文件命名約定一起使用)是將測試代碼放置在單獨的目錄中。 例如,
src/java
test/src/java
或遵循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" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.