我有一个Ant build.xml脚本,我试图使用。 其中,我添加了一个taskdef来运行一些junittesting。 但是,我遇到了可怕的类path问题。
因为这是一个weblogic应用程序,所以Weblogic将ANT_HOME设置为1.6.6的Weblogic ANT版本。另外,我们正在尝试使用JUnit 4,但Weblogic附带的JUnit是基于JUnit 3(我相信)。
我认为告诉Ant使用我在项目中签入的Ant和JUnit jar而不是使用Weblogic版本运行是一件简单的事情,但是我一直无法做到这一点。
这是我现在拥有的:
<path id="junit.classpath"> <fileset dir="${applib.dir}"> <include name="junit-4.10.jar"/> </fileset> </path> <taskdef name="myjunit" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask" classpathref="junit.classpath"> <classpath> <!-- These are here so that the junit task runs with these jars, which works --> <pathelement location="${applib.dir}/junit-4.10.jar"/> <pathelement location="${applib.dir}/ant-1.8.2/ant-junit4.jar"/> </classpath> </taskdef>
但是,无论我做什么,Ant的类path都不包含JUnit / framework / Test:
BUILD FAILED C:\build.xml:219: taskdef A class needed by class org.apache.tools.ant.taskdefs.optional.junit.JUnitTask cannot be found: j unit/framework/Test
我认为问题是由Weblogic设置ANT_HOME,Ant启动时会将ant-junit.jar添加到类path中。 ant诊断证实了这一点。
我能解决这个问题的唯一方法是把junit-4.10.jar直接放在classpath中,或者把它放在BEA ANT_HOME库目录中。 但是,这不适用于生产环境。
所以 – 我怎样才能添加junit-4.10.jar到Ant类path,所以taskdef不会导致Ant崩溃?
任何人有任何build议如何解决这个问题?
如何包装脚本如DOS批处理文件强制PATH,如:
set ANT_HOME=C:\ant\ant-1.8.2 set PATH=%PATH%;%ANT_HOME%\bin ant -f C:\mybuild.xml...
我知道你需要一个运行Unix和Windows的脚本。 但是这个想法在这里有什么意义吗?