Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant-如何排除Java测试文件?_Java_Ant - Fatal编程技术网

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

Ant-如何排除Java测试文件?,java,ant,Java,Ant,我想将Java代码从源文件夹复制到目标文件夹并进行编译,但需要排除一些测试代码。如何仅复制非测试代码?例如,我想包括bb/app/lite2并排除bb/app/test1,bb/app/cg 我知道我可以使用exclude元素,但我不想编写太多的exclude模式。因此,我可以使用: 然后使用?鉴于您问题中提到的目录结构,听起来您所有的非测试代码都在目录bb/app/lite2中。在这种情况下,只要指定的源目录下出现bb/app/lite2,就可以按如下方式编写任务: <property

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

我知道我可以使用exclude元素,但我不想编写太多的exclude模式。因此,我可以使用:


然后使用

鉴于您问题中提到的目录结构,听起来您所有的非测试代码都在目录
bb/app/lite2
中。在这种情况下,只要指定的源目录下出现
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>
正如他在评论中提到的,另一个约定(可以与文件命名约定一起使用)是将测试代码放在单独的目录中。比如说,

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

相关问题

实际上,更好的方法是遵循Maven约定(即使您没有使用Maven),将测试代码和常规代码放在不同的目录中。在Maven中,一个在
src/main/java
中,另一个在
src/test/java
中(我将留给读者来判断哪个是哪个)。您还可以将JAR中所需但不是java文件的资源放入
src/main/resources
。如果工作不是全部在一个目录中,则可以更轻松地完成工作。否则,使用
子任务执行
命令。
<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" />
<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" />