我有两个修改路径的配置。
Classpath '和'test.classpath'。现在我想写一些像
<path id="config.classpath">
<filelist dir="${lib.dir}">
...
</filelist>
</path>
<path id="test.classpath">
<filelist dir="${lib.dir}">
<file name="junit-3.8.1.jar"/>
</filelist>
</path>
<target name="test">
<junit>
<classpath>
<filelist refid="test.classpath"/>
<filelist refid="config.classpath"/>
</classpath>
...
</junit>
</target>
当我运行测试任务时,使用
构建失败test.classpath doesn't denote a filelist
所以我删除了整个东西的一部分,并尝试像这样
<filelist dir="${lib.dir}" id ="test.classpath">
<file name="junit-3.8.1.jar"/>
</filelist>
但是
失败了test.classpath doesn't denote a path
在那一点上我有点生气,因为它以前是一条路径,现在它不再是它抱怨它不是一条。
如何在junit任务中组合这两个路径(不需要额外写30行)
我也试过这个
<path id="test.classpath">
<fileset dir="${lib.dir}">
<include name="junit-3.8.1.jar"/>
</fileset>
</path>
但是这也给了我一个"not a filelist error"
你的问题是你的引用是路径而不是文件列表。您需要在类路径中使用<path>
:
<target name="test">
<junit>
<classpath>
<path refid="test.classpath"/>
<path refid="config.classpath"/>
</classpath>
...
</junit>
</target>
使用文件集而不是文件列表,并在类路径
中引用is作为路径<path id="config.classpath">
<fileset dir="${lib.dir}">
...
</fileset>
</path>
<path id="test.classpath">
<fileset dir="${lib.dir}">
<include name="junit-3.8.1.jar"/>
</fileset>
</path>
<target name="test">
<junit>
<classpath>
<path refid="test.classpath"/>
<path refid="config.classpath"/>
</classpath>
...
</junit>
</target>
我的本地测试示例如下。
<?xml version="1.0" encoding="UTF-8"?>
<project name="project" default="default">
<description>
description
</description>
<property name="lib.dir" location="${basedir}/target/lib"></property>
<path id="config.classpath">
<fileset dir="${lib.dir}">
<include name="commons-lang-2.6.jar"/>
</fileset>
</path>
<path id="test.classpath">
<fileset dir="${lib.dir}">
<include name="commons-io-2.1.jar"/>
</fileset>
</path>
<target name="default" description="description">
<available classname="org.apache.commons.lang.StringUtils" property="string.utils.found" classpathref="config.classpath"></available>
<available classname="org.apache.commons.io.IOUtils" property="io.utils.found" classpathref="config.classpath"></available>
<echo>string.utils.found=${string.utils.found}</echo>
<echo>io.utils.found=${io.utils.found}</echo>
<!-- combined classpath -->
<available classname="org.apache.commons.lang.StringUtils" property="string2.utils.found">
<classpath>
<path refid="test.classpath"></path>
<path refid="config.classpath"></path>
</classpath>
</available>
<available classname="org.apache.commons.io.IOUtils" property="io2.utils.found" >
<classpath>
<path refid="test.classpath"></path>
<path refid="config.classpath"></path>
</classpath>
</available>
<echo>string2.utils.found=${string2.utils.found}</echo>
<echo>io2.utils.found=${io2.utils.found}</echo>
</target>
</project>
输出: [echo] string.utils.found=true
[echo] io.utils.found=${io.utils.found}
[echo] string2.utils.found=true
[echo] io2.utils.found=true
BUILD SUCCESSFUL