注意してください-ここで「裏話を削除する」必要がある、またはこの質問は「CodeProとは何の関係もない」と主張する人には、CodeProにはAntタスクを起動する方法に関するドキュメントがほとんどないことを言及したいと思います-コマンドラインから適切に実行されます。CodePro はほぼ 100% UI 駆動型であり、そのドキュメントはそれに重点を置いています。この質問に完全に答えることができれば、コマンドラインから CodePro タスクを実行したい私のような他の開発者にとって、数少ない (唯一ではないにしても) 完全なドキュメントの 1 つとして役立つと思います。建てる。
コマンドラインからCodePro AnalyTix の Ant タスクを動作させようとしています。
ドキュメントを読み、いくつかの例をダウンロードした後、Ant で外部定義されたタスクを実行する通常の方法でタスクを実行する必要はありません。通常は次のようになります。
- サードパーティの Ant jar
xmlns
のルート要素内に属性を定義します<project>
<taskdef>
宣言を使用して 1 つ以上のタスクを定義する<target>
これらの定義されたタスクを要素内から呼び出す
CodePro では、Ant タスクは多くのコア Eclipse jar/クラスに依存しています。それらのサンプルのいずれかをダウンロードすると、Ant タスクを実行する方法を示す Windows BATCH ファイルが記述されていることがわかります。これらはすべて次の形式をとっています。
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 ファイルです。
私は午前中ずっと、これらの CodePro タスクを「通常の」方法で実行するために必要な依存関係を Ant lib ディレクトリに提供しようとしましたが、Eclipseplugins/
ディレクトリ全体をANT_HOME/lib
! 私はこれらの変更を元に戻し、コマンドラインから Ant を実行するこの (やや醜い) 方法を受け入れる準備ができました。
上記の例を借りて、これが私の新しいセットアップです。
build.xml
は私の「コア」Ant ビルドファイルであり、名前の付いたターゲットを持つ場所ですrun-codepro-analysis
codepro-analysis.xml
すべての CodePro タスクが定義される場所です (ラッパー ターゲット内)。headless.xml
これは、上記の BATCH ファイルと同等です- 上記の BATCH ファイルで提供されているものとまったく同じ引数
buildfile.xml#run-codepro-analysis
を呼び出して実行したいのですが、次の例外があります。<java>
- 偶然にも、私のマシンにはすでに 3 つの環境変数がセットアップされてい
JAVA_HOME
ます。の代わりにこれらを使用したいのは明らかです。ECLIPSE_HOME
WORKSPACE_HOME
JAVAEXE
ECLIPSEHOME
WORKSPACE
- 実行元と同じコンソール/端末に出力をリダイレクトしたい
ant -buildfile build.xml run-codepro-analysis
。notheadless_out.txt
または他のファイル
- 偶然にも、私のマシンにはすでに 3 つの環境変数がセットアップされてい
これは非常に複雑なコマンド (多くのオプション、引数、さらにはオプションへのネストされた引数を含む) であるため、ターゲット<java>
内の要素を構築する方法がよくわかりませんが、これまでのところ:run-codepro-analysis
<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 開発者向けに、これをビルドの一部として機能させる方法を説明する包括的なドキュメントは Web 上に他にありません (とにかく見つけることができます)。