2009-05-14 3 views
4

私は、以前のJDKが正しくコンパイルされ、さまざまなJARインクルードなどが必要な、私がやっているかなり長いプロジェクトを持っています。私はバッチスクリプトを使ってプロジェクト全体を組み立てています。スクリプト全体を完全自動化したいのですが。だから私は、Eclipseの特定のコードをJAR(JARを作るために指定した適切なJDKでコンパイルする)からJARに変換するためにEclipseが行うシェルコマンドを見ることができるかどうか疑問に思っていたので、時間を無駄にして、シェルの中で自分が正しいことをするようにしてください。ありがとう!Eclipseが作っているシェルコマンドを見ることはできますか?

答えて

5

Eclipseはコンパイルのためにシェルコマンドを実行しません。独自の組み込みコンパイラを使用します。

EclipseにANTスクリプトを生成させることは可能です。このスクリプトは、Eclipse組み込みコンパイラを使用してクラスをコンパイルできます。コンパイルのためのクラスパスも設定します。それは良い最初のステップかもしれません。スクリプトを作成するには、プロジェクトを選択し、コンテキストメニューの[書き出し]> [Antビルドファイル]を選択します。

+1

興味深い。しかし、ANTスクリプトでは、Eclipseのインストールに依存せずにビルド全体を実行する可能性はありますか?ありがとう! –

+1

いいえ、Eclipseで生成されたAntスクリプトにEclipseが必要です。 eclipseの依存関係を避けるために、おそらくあなた自身のスクリプトを書く必要があります。 –

+0

Ah。さて、スクリプトを最初から作成する必要があると思われる複雑さを考えれば、私はまだそれらを利用できるかもしれません。最後の質問は、シェルからAntスクリプトを実行することができますか?本当にありがとう! –

2

私が知る限り、EclipseはJARファイルをコンパイルまたは作成するためにシェルコマンドを発行しません。代わりに、対応するJava APIを使用します。

私がこの種の仕事をするために定期的に使っているのは、ant(http://ant.apache.org)です。

"src"ディレクトリのjavaソースを取得し、 "lib"ディレクトリのライブラリを使用してコンパイルし、結果のクラスを "project.jar"ファイルに入れる、本当に単純なbuild.xmlファイルです。

<?xml version="1.0" encoding="UTF-8"?> 
<project name="project"> 
    <target name="package" description="builds the jar file from the compiled classes"> 
     <mkdir dir="build" /> 
     <javac srcdir="src" destdir="build"> 
      <classpath> 
       <fileset dir="lib" includes="**/*.jar" /> 
      </classpath> 
     </javac> 
     <jar destfile="project.jar"> 
      <fileset dir="build" includes="**/*.classes" /> 
     </jar> 
    </target> 
</project> 
+0

Eclipseには独自のコンパイラがあります。 +1サンプルスクリプトのために;-) –

+0

サンプルのおかげで素晴らしい!これはピーターも言っていたこととうまくいくはずです! –

+0

ant タスクは、build.compilerプロパティに応じて異なるコンパイラを使用します。 build.compiler = org.eclipse.jdt.coreを設定します。JDTCompilerAdapterはJDTコンパイラを使用します(Antクラスパス上にあると仮定します。これは、Eclipseの内部でantを実行している場合はデフォルトであります)。 –

0

本当に良いオプションがAnt4Eclipse(http://ant4eclipse.sourceforge.net/)を使用することです

これはEclipseプロジェクトのメタデータを問い合わせるAntタスクのセットで、適切なプロジェクトのビルド順序、ソースおよび出力ディレクトリを決定するために使用することができます等々。

eclipseビルダーにantターゲットをマップすることもできます(たとえば、EclipseでANTLR Builderがセットアップされている場合は、ANTLRコードをコンパイルしてトリガーするANTLR Builderの名前にマップするantターゲットを定義できます)

私の最後の仕事では、ant4eclipseを使ってジェネリックビルドスクリプトを書いた。ある時点で新しい汎用ビルドスクリプトを作成しようとしますが、時間はありませんでした。

関連する問題