基本上,当我执行命令ant -f mybuild.xml clean junit-TestRunner
时,我的java文件中出现了很多错误,它在junit导入时出错,如:
java:6: error: package org.junit does not exist
这是我的xml文件的一部分,它在test-compile上给出了错误:
<path id="test.classpath">
<pathelement location="${build.test.dir}"/>
</path>
<target name="test-compile" depends="test-init">
<javac srcdir="test"
destdir="build\test"
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'中改变了它,但仍然给我同样的错误。
有什么建议吗?
答案 0 :(得分:1)
请勿将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>
顺便说一句,避免反斜杠。它可能会导致问题,因为它有时可以用作引用字符。相反,像我在上面所做的那样使用正斜杠。
答案 1 :(得分:0)
我怀疑这个:
classpathref="C:\junit-4.10"
应该指向上面的jar文件或类子目录。
答案 2 :(得分:0)
你检查了this page上的第二个“注释”吗?我认为最简单的方法是#1,将这些JAR放在${ANT_HOME}/lib
文件夹中。这样您就不必指定任何类路径。
答案 3 :(得分:0)
将以下目标添加到您的构建中。
<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标准位置之一,以便第三方依赖。