請注意 - 任何人認爲我應該在這裏「刪除背景故事」,或者說這個問題「與CodePro無關」,我想提到CodePro幾乎沒有關於如何從命令行正確啓動Ant任務的文檔。 CodePro幾乎100%由用戶界面驅動,他們的文檔重點關注。如果這個問題能夠得到完全解答,我相信它將成爲像我這樣的其他開發者的少數(如果不是唯一的)完整文檔之一,他們只是想從命令行運行CodePro任務,作爲他們的一部分建立。在Ant任務中運行「無頭Eclipse」
我試圖從命令行得到CodePro AnalyTix's Ant tasks。
閱讀文檔,並下載了一些例子之後,它不會讓你運行的任務,就像你在運行Ant的,通常看起來外部定義任務的正常方式:
- 定義一個
xmlns
屬性根<project>
元素第三方螞蟻罐內 - 定義與
<taskdef>
聲明1+任務 - 調用來自
<target>
元素中所定義的那些任務
使用CodePro,Ant任務依賴於許多核心Eclipse Jar /類。如果你下載任何他們examples的,你會看到,展示他們是如何想你運行的Ant任務寫入Windows批處理文件,他們都採取以下形式:
set JAVAEXE="\Programs\jdk1.5.0_05\jre\bin\java.exe"
set ECLIPSEHOME="\Programs\eclipse_330"
set WORKSPACE="\Programs\eclipse_330_headless\headless_arbitrary_src_multi_audit\workspace"
for /f "delims= tokens=1" %%c in ('dir /B /S /OD %ECLIPSEHOME%\plugins\org.eclipse.equinox.launcher_*.jar') do set EQUINOXJAR=%%c
:run
@echo on
%JAVAEXE% -jar %EQUINOXJAR% -clean -noupdate -application org.eclipse.ant.core.antRunner -data %WORKSPACE% -verbose -file headless.xml %* >headless_out.txt 2>&1
的headless.xml
是Ant文件它具有CodePro Ant目標和任務。
我整個上午都在試圖用它需要運行這些任務的CodePro「正常」的方式必要的依賴提供我的Ant lib目錄,但發現自己開始對整個Eclipse plugins/
目錄複製到ANT_HOME/lib
!我已經恢復了這些更改,現在準備接受從命令行運行Ant的這種(相當醜陋的)方式。
從上面的例子中借用,這裏是我的新格局:
build.xml
是我的「芯」 Ant構建,並在那裏我將有一個名爲目標run-codepro-analysis
codepro-analysis.xml
是所有我的CodePro任務將被定義(在包裝目標中);這相當於headless.xml
以上- 批處理文件我想
buildfile.xml#run-codepro-analysis
打電話<java>
和運行完全相同的參數在上面的批處理文件提供,但下列情況除外:- 巧合的是,我已經有三個env vars在我的機器上安裝:
JAVA_HOME
(指向我的JDK),ECLIPSE_HOME
和WORKSPACE_HOME
;我顯然想用這些來代替JAVAEXE
,ECLIPSEHOME
和WORKSPACE
- 我希望將輸出重定向到相同的控制檯/終端,因爲我正在運行
ant -buildfile build.xml run-codepro-analysis
; 不headless_out.txt
或其他一些文件
- 巧合的是,我已經有三個env vars在我的機器上安裝:
看到,這是一個相當複雜的命令(有許多選項,參數,甚至嵌套的參數選項),我真的不知道如何構建在run-codepro-analysis
目標內<java>
元素,但這裏是我到目前爲止有:
<target name="run-codepro-analysis">
<java fork="true" failonerror="true"
jar="${env.ECLIPSE_HOME}/plugins/org.eclipse.equinox.launcher_*.jar">
<arg line="-clean -noupdate -application org.eclipse.ant.core.antRunner -data ${env.WORKSPACE_HOME} -verbose -file codepro-analysis.xml"/>
</target>
當我運行此,構建失敗:
【JAVA]無法訪問jar文件/home/myuser/sandbox/workbench/eclipse/indigo-3.7/eclipse/plugins/org.eclipse.equinox.launcher_*.jar
我不知道如果這是因爲通配符失敗,並且它實際上正在查找org.eclipse.equinox.launcher_*.jar
,或者我的<java>
任務中的其他內容配置不正確。在此先感謝任何能夠幫助我實現這一目標的人。就像我說的那樣,在網絡上沒有其他全面的文檔(無論如何我都能找到),這些文檔解釋瞭如何在構建過程中實現這一目標,特別是對於無法運行BATCH文件的Linux開發人員。
忘了提 - 這是一個非常* *類似的問題[本](http://stackoverflow.com/questions/5632930/how-to-execute-google-codepro-analytix然而,在這個問題中,用戶正試圖直接從BATCH文件運行'headless.xml'。在這裏,我試圖從另一個構建文件運行(相當於)'headless.xml',以便訪問由'AntClassLoader'提供的Eclipse/Equinox類路徑。 – IAmYourFaja