[英]Build Eclipse Java Project from Command Line
有沒有辦法從命令行編譯基於 Eclipse 的 Java 項目?
我正在嘗試自動化我的構建(使用 FinalBuilder 而不是 ant),我既不是 Java 也不是 Eclipse 專家。 我可能可以弄清楚如何使用直接的 java 命令行選項來做到這一點,但是 Eclipse 項目感覺就像是浪費了很多精力。
如果無法通過命令行編譯 Eclipse 項目,有沒有辦法從 Eclipse 中生成所需的 java 命令行? 或者是否有一些文件我可以四處尋找它在幕后執行的編譯步驟?
伙計們,我正在尋找一個不包括螞蟻的答案。 讓我重新重復最初的問題.......有沒有辦法從命令行構建一個 Eclipse 項目?
我不認為這是一個不合理的問題,因為我可以為視覺工作室做這樣的事情:
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 用“equinox 啟動器”替換了startup.jar
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
參數指定工作區的位置。
Equinox 啟動器的版本號將取決於您擁有的 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
但是所有涉及螞蟻的東西,這不是基思所追求的。
關於批量編譯,請參考編譯 Java 代碼,尤其是“使用批量編譯器”一節
批處理編譯器類位於 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-找到了對我有用的方法 命令行.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) 要在我的安卓手機上運行該項目,我使用 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)第二個附注:上面提到的鏈接還包括從命令構建整個項目的說明。
希望這將有助於解決這個問題。 我知道我很高興在這里找到有關此主題的任何信息。
這個問題包含一些關於無頭構建的有用鏈接,但它們主要用於構建插件。 我不確定其中有多少可以應用於純 Java 項目。
只是想把我的兩分錢加到這個上。 我嘗試按照@Kieveli 對非 win32 的建議進行操作(在下面重復),但它對我不起作用(在 CentOS 上使用 Eclipse: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
不太清楚為什么它顯然做了兩次,但它似乎有效。
對於將來可能遇到此問題的任何人,我只想將此評論添加到此問題中。
有一次,我在做一個項目,從 CMD(使用 ECLIPSE)構建復雜且相互關聯的 JAVA 項目是我唯一的選擇。 所以,你需要做的就是:
下載您想要的 ECLIPSE IDE(使用 ECLIPSE OXYGEN、適用於企業 Java 和 Web 開發人員的 Eclipse IDE 以及適用於 Java 開發人員的 Eclipse IDE 進行了測試,並且運行良好)
在 ECLIPSE 中打開您的項目並根據您的項目更改 ECLIPSE 配置
關閉 ECLIPSE 並保存從 ECLIPSE 創建的 .metadata(如果您的工作區將來要刷新)
在 CMD 中運行此腳本:
"%ECLIPSE_IDE%\eclipsec.exe" -noSplash -data "YOUR_WORKSPACE" -application org.eclipse.jdt.apt.core.aptBuild
所以,我想說的是,如果沒有 .metadata 在工作區中,我無法使用上述命令進行構建。 確保它存在於那里。 如果需要,請在每次要執行命令時復制 .metadata 並復制粘貼。
嗨,除了 VonC 評論。 我正在使用 ecj 編譯器來編譯我的項目。 一些課程沒有找到,這讓我感到很奇怪。 但是該項目使用 javac 編譯器構建得很好。
所以我只是將類添加到類路徑中(我們必須將其作為參數傳遞),現在它工作正常...... :)
庫爾比爾辛格
簡短的回答。 不。Eclipse 沒有像 Visual Studio 這樣的命令行開關來構建項目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.