[英]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.