簡體   English   中英

螞蟻-如何排除Java測試文件?

[英]Ant - How to exclude Java test files?

我想將Java代碼從源文件夾復制到目標文件夾並進行編譯,但是需要排除一些測試代碼。 如何只復制非測試代碼? 例如,我要包含bb/app/lite2並排除bb/app/test1bb/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任務支持includesexcludes屬性,因此您可以直接選擇非測試文件,而不是將源文件復制到新目錄中。

使用<javac> Ant任務includesexcludes屬性

<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" />

相關的stackoverflow問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM