2012-08-06 66 views
2

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

包裝腳本如何? DOS批處理文件強制一個PATH,如:

set ANT_HOME=C:\ant\ant-1.8.2 
set PATH=%PATH%;%ANT_HOME%\bin 
ant -f C:\mybuild.xml... 

我知道你需要一個運行Unix和Windows的腳本。但這個想法在這裏有什麼意義嗎?

+0

這並沒有真正解決我的一些關鍵問題:1)我必須編寫多個腳本(每個平臺一個),2)它取決於外部ANT安裝,以及3)它沒有解決缺少junit * .jar文件,該文件也必須位於類路徑中,我也不特別想要將其安裝到生產機器中。 – Jay 2012-08-13 20:55:53