我有一个我正在尝试使用的Ant build.xml脚本。在其中,我添加了一个taskdef来运行一些junit测试。但是,我遇到了可怕的类路径问题。因为这是一个weblogic应用程序,所以Weblogic将ANT_HOME设置为Weblogic ANT版本,该版本为1.6.5此外,我们尝试使用JUnit 4,但Weblogic附带的JUnit是基于JUnit 3的(我相信)。在Weblogic中运行ant build和ANT和JUNIT的本地版本
我认为这将是一件简单的事情,可以告诉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的类路径中不包括的JUnit /框架/测试:
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
我认为问题ANT_HOME是由Weblogic设置的,因此当Ant启动时,ant-junit.jar被添加到类路径中。蚂蚁诊断证实了这一点。
我一直能够解决这个问题的唯一方法是将junit-4.10.jar直接放在classpath中,或者放在BEA ANT_HOME库目录中。但是,这不适用于生产环境。
所以 - 如何将junit-4.10.jar添加到Ant类路径中,以便taskdef不会导致Ant崩溃?
- 该任务仅用于在代码生成期间运行JUnit测试,它不需要部署。
- 在任何和所有使用此脚本的机器上安装ANT和JUNIT并不是真正的选择。
- 多个平台(unix和windows)需要能够运行相同的构建脚本,Windows用于构建代码和Linux以部署到Weblogic。
- 我真的不想在生产包中提供JUnit和ANT jar,只是在部署阶段关闭Ant,甚至不会运行相关任务。
- 我可以有一个单独的build.xml文件只是为了编译/运行junit测试,但这会导致重复的代码,并且看起来像一个杂凑。
任何人有任何建议如何解决这个问题?
这并没有真正解决我的一些关键问题:1)我必须编写多个脚本(每个平台一个),2)它取决于外部ANT安装,以及3)它没有解决缺少junit * .jar文件,该文件也必须位于类路径中,我也不特别想要将其安装到生产机器中。 – Jay 2012-08-13 20:55:53