web-dev-qa-db-ja.com

EclipseのビルドJavaコマンドラインからのプロジェクト

EclipseベースのJavaプロジェクトをコマンドラインからコンパイルする方法はありますか?

私は(antではなくFinalBuilderを使用して)ビルドを自動化しようとしていますが、JavaでもEclipseのエキスパートでもありません。おそらく、ストレートJavaコマンドラインオプションですが、Eclipseプロジェクトは多くの無駄な努力のように感じます。

コマンドライン経由でEclipseプロジェクトをコンパイルする方法がない場合、必要なJavaコマンドラインをEclipse内から生成する方法はありますか?舞台裏で行っているコンパイル手順を見つけるために周りに?


みんな、私は[〜#〜] not [〜#〜]を含む答えを探しています。元の質問を繰り返してみましょう.......コマンドラインからEclipseプロジェクトをビルドする方法はありますか?

Visual Studioで次のようなことができるので、これは不合理な質問ではないと思います。

devenv.exe /build "Debug|Any CPU" "C:\Projects\MyProject\source\MyProject.sln"
116
Keith G

コマンドラインからワークスペースを介してEclipseプロジェクトをビルドできます。

eclipsec.exe -noSplash -data "D:\Source\MyProject\workspace" -application org.Eclipse.jdt.apt.core.aptBuild

jdt aptプラグインを使用して、ワークスペースを自動的に構築します。これは「ヘッドレスビルド」とも呼ばれます。理解するのは難しい。 win32 exeを使用していない場合、これを試すことができます:

Java -cp startup.jar -noSplash -data "D:\Source\MyProject\workspace" -application org.Eclipse.jdt.apt.core.aptBuild

更新

数年前、Eclipseはstartup.jarを「equinoxランチャー」に置き換えました

https://wiki.Eclipse.org/Equinox_Launcher

Eclipse Mars(MacOX)の場合:

Java -jar /Applications/Eclipse.app/Contents/Eclipse/plugins/org.Eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -noSplash -data "workspace" -application org.Eclipse.jdt.apt.core.aptBuild

-dataパラメーターは、ワークスペースの場所を指定します。

分点ランチャーのバージョン番号は、使用しているEclipseのバージョンによって異なります。

59
Kieveli

Andréの答えを完成させるために、antソリューションは Emacs、JDEE、Ant、およびEclipse Java Compiler で説明されているもののようになります。

      <javac
          srcdir="${src}"
          destdir="${build.dir}/classes"> 
        <compilerarg 
           compiler="org.Eclipse.jdt.core.JDTCompilerAdapter" 
           line="-warn:+unused -Xemacs"/>
        <classpath refid="compile.classpath" />
      </javac>

Compilerarg要素を使用すると、追加のコマンドライン引数をEclipseコンパイラに渡すこともできます。

完全なantスクリプトの例 を見つけることができます。これは、コマンドラインでを呼び出すと:

Java -cp C:/Eclipse-SDK-3.4-win32/Eclipse/plugins/org.Eclipse.equinox.launcher_1.0.100.v20080509-1800.jar org.Eclipse.core.launcher.Main -data "C:\Documents and Settings\Administrator\workspace" -application org.Eclipse.ant.core.antRunner -buildfile build.xml -verbose

しかし、アリを含むものはすべて、キースが望んでいるものではありません。

バッチコンパイルについては、Compiling Java code、特にセクション「 バッチコンパイラの使用 "

バッチコンパイラクラスは、JDT Coreプラグインにあります。クラスの名前はorg.Eclipse.jdt.compiler.batch.BatchCompilerです。 plugins/org.Eclipse.jdt.core_3.4.0..jarにパッケージ化されています。 3.2以降、個別のダウンロードとしても利用可能です。ファイルの名前はecj.jarです。
3.3以降、このjarにはjsr199(コンパイラAPI)のサポートとjsr269(注釈処理)のサポートも含まれています。注釈処理サポートを使用するには、1.6 VMが必要です。

コマンドラインからバッチコンパイラを実行すると、

Java -jar org.Eclipse.jdt.core_3.4.0<qualifier>.jar -classpath rt.jar A.Java

または:

Java -jar ecj.jar -classpath rt.jar A.Java

すべてのJavaコンパイルオプションについても、このセクションで詳しく説明しています。

Visual Studioコマンドラインコンパイル機能との違いは、Eclipseがコマンドライン引数で.projectと.classpathを直接読み取らないように見えることです。まったく同じコンパイル結果を得るには、さまざまなコマンドラインオプションで.projectおよび.classpathに含まれるすべての情報を報告する必要があります。

ですから、短い答えは「はい、Eclipseはそうです」です。 ;)

22
VonC

27年後、私もIDEでの開発が不快になりました。私はこれらの提案を試みました(上記)-そしておそらくすべてが正しいことに従わなかったので-私はウェブ検索を行い、私のために働いたものを見つけました ' http://incise.org/Android-development- on-the-command-line.html '.

答えは、上記のすべての答えの組み合わせのように見えました(間違っているかどうかを教えてください、そうであれば私の謝罪を受け入れてください)。

前述のように、Eclipse/adtは必要なantファイルを作成しません。 Eclipse IDEなしで(およびantスクリプトを作成せずに)コンパイルするには:

1)最上位ディレクトリにbuild.xmlを生成します。

Android list targets  (to get target id used below)

Android update project --target target_id --name project_name  --path top_level_directory

   ** my sample project had a target_id of 1 and a project name of 't1', and 
   I am building from the top level directory of project
   my command line looks like Android update project --target 1 --name t1 --path `pwd`

2)次に、プロジェクトをコンパイルします。 「ant」を使用しないという要求に少し混乱しました。願わくば、リクエスタは、antスクリプトを書きたくないことを意味していました。次のステップはantを使用してアプリケーションをコンパイルすることだからです

 ant target

    this confused me a little bit, because i thought they were talking about the
    Android device, but they're not.  It's the mode  (debug/release)
    my command line looks like  ant debug

3)apkをデバイスにインストールするには、antを再度使用する必要がありました。

 ant target install

    ** my command line looked like  ant debug install

4)私のAndroid電話でプロジェクトを実行するには、adbを使用します。

 adb Shell 'am start -n your.project.name/.activity'

    ** Again there was some confusion as to what exactly I had to use for project 
    My command line looked like adb Shell 'am start -n com.example.t1/.MainActivity'
    I also found that if you type 'adb Shell' you get put to a cli Shell interface
    where you can do just about anything from there.

3A)補足事項:デバイスからログを表示するには、次を使用します。

 adb logcat

3B)副次的注意:上記のリンクには、コマンドからプロジェクト全体をビルドするための指示も含まれています。

うまくいけば、これが質問に役立つでしょう。ここでこのトピックについてanythingを見つけて本当にうれしかったことを知っています。

8
Charles Thomas

通常のアプローチは他の方法で動作します: maven または ant に基づいてビルドを作成してから、IDE of choiceそれはあなたがそれから独立しているようにするためであり、これは特に新しいチームメンバーをスピードアップさせようとするとき、または自動ビルドのために堅実な統合サーバーを使用しようとするときに重要です。 pomファイルを作成し、mvn Eclipse:eclipseを介してEclipseプロジェクトを生成します。

4
André

この質問 には、ヘッドレスビルドに関するいくつかの便利なリンクが含まれていますが、それらは主にプラグインのビルドを対象としています。どれだけ純粋なJavaプロジェクトに適用できるかわからない。

2
JesperE

これに2セントを追加したかっただけです。 @Kieveliがwin32以外(以下に繰り返します)で提案したようにやってみましたが、うまくいきませんでした(Eclipseを備えたCentOSで:Luna):

Java -cp startup.jar -noSplash -data "D:\Source\MyProject\workspace" -application org.Eclipse.jdt.apt.core.aptBuild

Eclipse(Luna)を使用したCentOSでの特定のセットアップでは、これは機能しました。

$Eclipse_HOME/Eclipse -nosplash -application org.Eclipse.jdt.apt.core.aptBuild  startup.jar -data ~/workspace

出力は次のようになります。

Building workspace
Building '/RemoteSystemsTempFiles'
Building '/test'
Invoking 'Java Builder' on '/test'.
Cleaning output folder for test
Build done
Building workspace
Building '/RemoteSystemsTempFiles'
Building '/test'
Invoking 'Java Builder' on '/test'.
Preparing to build test
Cleaning output folder for test
Copying resources to the output folder
Analyzing sources
Compiling test/src/com/company/test/tool
Build done

どうして二度それをしたのかはよくわかりませんが、うまくいくようです。

1
jkwinn26

こんにちはVonCコメントに追加しました。プロジェクトをコンパイルするためにecjコンパイラを使用しています。いくつかのクラスが見つからないという言い訳を投げかけていました。しかし、このプロジェクトはjavacコンパイラでうまく機能していました。

したがって、クラスパスにクラスを追加し(これを引数として渡す必要があります)、現在は正常に機能しています... :)

クルビル・シン

0
Kulbir Singh