我有两个refid到路径'config.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>
但这也给了我“不是文件列表错误”。
答案 0 :(得分:4)
您的问题是您的引用是路径而不是文件列表。您需要在类路径中使用<path>
:
<target name="test">
<junit>
<classpath>
<path refid="test.classpath"/>
<path refid="config.classpath"/>
</classpath>
...
</junit>
</target>
答案 1 :(得分:0)
使用fileset而不是filelist,引用作为类路径中的路径
<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