我有一個我正在嘗試使用的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