java - Ant - 如何排除 Java 测试文件?

标签 java ant

我想将 Java 代码从源文件夹复制到目标文件夹并编译它,但需要排除一些测试代码。如何只复制非测试代码?例如,我想包括 bb/app/lite2并排除 bb/app/test1 , bb/app/cg ,...

我知道我可以使用排除元素,但我不想写那么多排除模式。那么我可以只使用:

<exclude name="bb/app/**">然后使用 <include name="bb/app/lite2">

最佳答案

鉴于您问题中提到的目录结构,听起来您的所有非测试代码都在目录 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任务支持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问题

关于java - Ant - 如何排除 Java 测试文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12403699/

相关文章:

ant - 您可以在 Apache Ivy 中指定依赖项校验和吗?

ant - 如何从另一个文件中调用宏定义

java - Ant JavaDoc 任务从自定义 taglet 中抛出 `NoClassDefFoundError`,即使该类*在类路径中

java - Exoplayer 不在本地存储上播放本地文件

java - 已经扩展任何其他类的类可以通过任何方式扩展或实现 SwingWorker

java - 找不到.txt文件的原因?

java - war 不支持嵌套的 "fileset"元素

java - Log4J 中的阈值是什么意思?

java - 从 Jackson 解析器生成 JSON

java - 关于 ant 脚本这一部分的一些澄清?