基本上,当我执行命令ant -f mybuild.xml clean junit-TestRunner
时,我在java文件中得到很多错误,它在junit导入时给出错误,如:
java:6: error: package org.junit does not exist
这是我的xml文件的一部分,它在测试编译时给我错误:
<path id="test.classpath">
<pathelement location="${build.test.dir}"/>
</path>
<target name="test-compile" depends="test-init">
<javac srcdir="test"
destdir="buildtest"
includeAntRuntime="No"/>
</target>
<target name="junit-TestRunner" depends="test-compile">
<java classname="org.junit.runner.JUnitCore"
classpathref="C:junit-4.10">
<arg value="org.example.antbook.junit.SimpleTest"/>
</java>
<java classname="org.junit.runner.JUnitCore"
classpathref="test.classpath">
<arg value="org.eclipseguide.persistence.FilePersistenceServicesTest"/>
</java>
</target>
我假设它找不到我的junit-4.10.jar文件所在的目录。我已经在'classpathref'中改变了这一点,但仍然给我相同的错误。
有什么建议吗?
不要把junit.jar
放进你的$ANT_HOME
里。如果这样做,当您安装新版本的Ant时,或者当其他人签出该文件时,就会出现问题。这是你的问题:
<target name="junit-TestRunner" depends="test-compile">
<java classname="org.junit.runner.JUnitCore"
classpathref="C:junit-4.10">
<arg value="org.example.antbook.junit.SimpleTest"/>
</java>
classpathref
是对类路径的引用。它是单独定义的,它不是一个jar或目录。
<java>
任务之前,我首先定义我的类路径引用:
<classpath id="test.classpath">
<pathelement path="C:/junit-4.10"/>
</classpath>
这定义了一个引用到这个叫做test.classpath
的类路径。你现在可以在<java>
任务中使用它:
<target name="junit-TestRunner" depends="test-compile">
<classpath id="test.classpath">
<pathelement path="C:/junit-4.10"/>
</classpath>
<java classname="org.junit.runner.JUnitCore"
classpathref="test.classpath">
<arg value="org.example.antbook.junit.SimpleTest"/>
</java>
你可以做的另一件事是简单地包括classpath
,这样你就不必在一开始就定义对它的引用:
<target name="junit-TestRunner" depends="test-compile">
<java classname="org.junit.runner.JUnitCore">
<arg value="org.example.antbook.junit.SimpleTest"/>
<classpath>
<pathelement path="C:/junit-4.10"/>
</classpath>
</java>
顺便说一下,避免使用反斜杠。它可能会导致问题,因为它有时可以用作引号字符。相反,请像上面那样使用正斜杠。
我怀疑:
classpathref="C:junit-4.10"
应该指向上面的jar文件或classes子目录
您检查过本页的第二个"备注"了吗?我认为最简单的方法是#1,将这些jar放在${ANT_HOME}/lib
文件夹中。这样你就不需要指定任何类路径。
将以下目标添加到您的构建中。
<target name="bootstrap" description="Install build dependencies">
<mkdir dir="${user.home}/.ant/lib"/>
<get dest="${user.home}/.ant/lib/junit.jar" src="http://search.maven.org/remotecontent?filepath=junit/junit/4.11/junit-4.11.jar"/>
</target>
这将把junit jar安装到一个用于第三方依赖的ANT标准位置。