簡體   English   中英

從命令行構建 Eclipse Java 項目

[英]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)第二個附注:上面提到的鏈接還包括從命令構建整個項目的說明。

希望這將有助於解決這個問題。 我知道我很高興在這里找到有關此主題的任何信息。

通常的方法是相反的:您基於mavenant創建構建,然后為您選擇的 IDE 使用集成,以便您獨立於它,尤其是。 當您嘗試讓新的團隊成員加快速度或使用連續的集成服務器進行自動構建時,這一點很重要。 我建議使用 maven 並讓它為您完成繁重的工作。 創建一個 pom 文件並通過 mvn eclipse:eclipse 生成 eclipse 項目。 高溫高壓

這個問題包含一些關於無頭構建的有用鏈接,但它們主要用於構建插件。 我不確定其中有多少可以應用於純 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM