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"
コマンドラインからワークスペースを介して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のバージョンによって異なります。
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はそうです」です。 ;)
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を見つけて本当にうれしかったことを知っています。
この質問 には、ヘッドレスビルドに関するいくつかの便利なリンクが含まれていますが、それらは主にプラグインのビルドを対象としています。どれだけ純粋なJavaプロジェクトに適用できるかわからない。
これに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
どうして二度それをしたのかはよくわかりませんが、うまくいくようです。
こんにちはVonCコメントに追加しました。プロジェクトをコンパイルするためにecjコンパイラを使用しています。いくつかのクラスが見つからないという言い訳を投げかけていました。しかし、このプロジェクトはjavacコンパイラでうまく機能していました。
したがって、クラスパスにクラスを追加し(これを引数として渡す必要があります)、現在は正常に機能しています... :)
クルビル・シン