我们可以将两个refi组合起来作为类路径使用



我有两个修改路径的配置。

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

相关内容

  • 没有找到相关文章