簡體   English   中英

在Ant任務中運行“無頭Eclipse”

[英]Running “headless Eclipse” inside Ant task

請注意 -對於任何認為我應該在這里“刪除背景故事”的人,或者這個問題與“與CodePro無關”的人,我想提到CodePro幾乎沒有關於如何提高其Ant任務的文檔,並從命令行正常運行。 CodePro幾乎是100%由UI驅動的,他們的文檔集中在此方面。 如果可以完全回答這個問題,我相信它將成為其他開發人員(如我)的一小部分(如果不是唯一的)完整文檔之一,這些開發人員只是想從命令行運行CodePro任務,作為他們的一部分建立。

我正在嘗試從命令行運行CodePro AnalyTix的Ant任務

閱讀文檔並下載一些示例后,您不希望您以在Ant中運行外部定義的任務的正常方式運行任務,通常如下所示:

  1. 在第3方螞蟻罐的根<project>元素內定義xmlns屬性
  2. 使用<taskdef>聲明定義1個以上任務
  3. <target>元素內部調用那些定義的任務

使用CodePro,Ant任務取決於許多核心Eclipse jar /類。 如果下載他們的任何示例 ,您將看到編寫的Windows BATCH文件,這些文件演示了他們希望您如何運行其Ant任務,並且它們都采用以下形式:

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是具有CodePro Ant目標和任務的Ant文件。

我一整天都在嘗試為Ant lib目錄提供必要的依賴關系,它需要以“正常”方式運行這些CodePro任務,但是發現自己開始將整個Eclipse plugins/目錄復制到ANT_HOME/lib 我已經撤消了這些更改,現在准備接受從命令行運行Ant的這種(相當難看的)方式。

從上面的示例中借用,這是我的新設置:

  • build.xml是我的“核心” Ant構建文件,在這里我將有一個名為run-codepro-analysis的目標。
  • 在我的所有CodePro任務都將在codepro-analysis.xml中定義的位置(在包裝目標中); 這等效於上面的BATCH文件中的headless.xml
  • 我希望buildfile.xml#run-codepro-analysis調用<java>並運行與上面BATCH文件中提供的參數完全相同的參數,但以下情況除外
    • 巧合的是,我已經在機器上設置了三個環境變量: JAVA_HOME (指向我的JDK), ECLIPSE_HOMEWORKSPACE_HOME 我顯然想用它們代替JAVAEXEECLIPSEHOMEWORKSPACE
    • 我希望將輸出重定向到與運行ant -buildfile build.xml run-codepro-analysis相同的控制台/終端; 不是 headless_out.txt或其他文件

看到這是一個相當復雜的命令(帶有許多選項,參數,甚至選項的嵌套參數),我不確定如何在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]無法訪問jarfile /home/myuser/sandbox/workbench/eclipse/indigo-3.7/eclipse/plugins/org.eclipse.equinox.launcher_*.jar

我不確定這是否是因為通配符失敗,並且實際上是在尋找org.eclipse.equinox.launcher_*.jar ,還是<java>任務中的其他內容配置不正確。 在此先感謝可以幫助我完成此工作的任何人。 就像我說的那樣,網絡上沒有其他全面的文檔(無論如何我都可以找到)來解釋如何將其作為構建的一部分進行工作,特別是對於不能運行BATCH文件的Linux開發人員而言。

快好了。

jar參數不能有通配符,但是可以很容易地解決,可以使用classnameclasspath代替(可以將fileset與通配符一起使用)。

我還建議使用單參數格式將命令行參數傳遞給Java任務。 以后減少驚喜

<target name="run-codepro-analysis">
  <java fork="true" failonerror="true"
    classname="org.eclipse.equinox.launcher.Main"
  >
    <arg value="-clean"/>
    <arg value="-noupdate"/>
    <arg value="-application"/>
    <arg value="org.eclipse.ant.core.antRunner"/>
    <arg value="-data"/>
    <arg file="${env.WORKSPACE_HOME}"/>
    <arg value="-verbose"/>
    <arg value="-file"/>
    <arg file="codepro-analysis.xml"/>

    <classpath>
      <fileset dir="${env.ECLIPSE_HOME}/plugins">
        <include name="org.eclipse.equinox.launcher_*.jar"/>
      </fileset>
    </classpath>
  </java>
</target>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM