Bangun Proyek Java Eclipse dari Command Line

118

Apakah ada cara untuk mengkompilasi proyek Java berbasis Eclipse dari baris perintah?

Saya mencoba untuk mengotomatiskan build saya (menggunakan FinalBuilder bukan ant), dan saya bukan ahli Java atau Eclipse. Saya mungkin bisa mengetahui cara melakukan ini dengan opsi baris perintah java langsung, tetapi kemudian proyek Eclipse terasa seperti banyak usaha yang sia-sia.

Jika tidak ada cara untuk mengompilasi proyek Eclipse melalui baris perintah, apakah ada cara untuk membuat baris perintah java yang diperlukan dari dalam Eclipse? Atau apakah ada beberapa file yang dapat saya lihat untuk mengetahui langkah-langkah kompilasi yang dilakukannya di balik layar?


Teman-teman, saya sedang mencari jawaban yang TIDAK termasuk semut. Izinkan saya mengulangi pertanyaan awal ....... Apakah ada cara untuk membangun proyek Eclipse dari baris perintah?

Saya tidak berpikir ini adalah pertanyaan yang tidak masuk akal mengingat saya dapat melakukan sesuatu seperti ini untuk studio visual:

devenv.exe /build "Debug|Any CPU" "C:\Projects\MyProject\source\MyProject.sln"
Keith G
sumber
3
Bagaimana tidak ada plugin / jar untuk ini !!
Kieveli
1
Oke ... Saya menambahkan jawaban baru yang benar.
Kieveli

Jawaban:

61

Anda dapat membangun proyek gerhana melalui ruang kerja dari baris perintah:

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

Ini menggunakan jdt aptplugin untuk membangun ruang kerja Anda secara otomatis. Ini juga dikenal sebagai 'Headless Build'. Sangat sulit untuk diketahui. Jika Anda tidak menggunakan win32 exe, Anda dapat mencoba ini:

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

Memperbarui

Beberapa tahun lalu gerhana diganti startup.jardengan "equinox launcher"

https://wiki.eclipse.org/Equinox_Launcher

Di 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

The -dataparameter menentukan lokasi ruang kerja Anda.

Nomor versi peluncur ekuinoks akan bergantung pada versi gerhana yang Anda miliki.

Kieveli
sumber
4
Meskipun saya sudah lama pindah dari proyek ini dan tidak dapat memverifikasi apakah jawaban ini benar-benar berfungsi atau tidak, saya mengubah jawaban yang diterima untuk yang ini. Karena ini menunjukkan bahwa Eclipse memang memiliki saklar baris perintah.
Keith G
3
Hanya satu pemikiran - sepertinya ini hanya berfungsi untuk ruang kerja yang sudah ada sebelumnya. Saya rasa ini menyulitkan, misalnya, melakukan pembayaran proyek dari kontrol sumber dan membangunnya dengan cara ini.
Yohanes
Saya yakin ruang kerja saya telah dikomit ke repositori svn. Entah memiliki jalur relatif, atau struktur direktori yang cocok.
Kieveli
2
Bagaimana Anda melihat hasil build? Saya telah mencoba ini, dan mendapatkan keluaran: "Membangun ruang kerja", tetapi saya tidak mendapatkan indikasi apakah pembangunan berhasil atau gagal.
Dikla
Anda juga dapat membangun ruang kerja Anda melalui skrip ant baris perintah. Lihat help.eclipse.org/indigo/…
pemrogram ulang
22

Untuk melengkapi jawaban André, solusi semut bisa seperti yang dijelaskan dalam Emacs, JDEE, Ant, dan Eclipse Java Compiler , seperti di:

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

Elemen compilerarg juga memungkinkan Anda untuk meneruskan argumen baris perintah tambahan ke compiler eclipse.

Anda dapat menemukan contoh skrip ant lengkap di sini yang akan dipanggil dalam baris perintah dengan:

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

TAPI semua itu melibatkan semut, yang tidak diinginkan Keith.

Untuk kompilasi batch, lihat Mengompilasi kode Java , terutama bagian " Menggunakan kompiler batch "

Kelas kompilator batch terletak di plug-in JDT Core. Nama kelasnya adalah org.eclipse.jdt.compiler.batch.BatchCompiler. Itu dikemas ke dalam plugins / org.eclipse.jdt.core_3.4.0..jar. Sejak 3.2, ini juga tersedia sebagai unduhan terpisah. Nama filenya ecj.jar.
Sejak 3.3, jar ini juga berisi dukungan untuk jsr199 (Compiler API) dan dukungan untuk jsr269 (Pemrosesan anotasi). Untuk menggunakan dukungan pemrosesan anotasi, diperlukan VM 1,6.

Menjalankan kompiler batch Dari baris perintah akan memberikan

java -jar org.eclipse.jdt.core_3.4.0<qualifier>.jar -classpath rt.jar A.java

atau:

java -jar ecj.jar -classpath rt.jar A.java

Semua opsi kompilasi java dirinci di bagian itu juga.

Perbedaan dengan fitur kompilasi baris perintah Visual Studio adalah bahwa Eclipse tampaknya tidak langsung membaca .project dan .classpath-nya dalam argumen baris perintah . Anda harus melaporkan semua informasi yang terdapat dalam .project dan .classpath dalam berbagai opsi baris perintah untuk mendapatkan hasil kompilasi yang sama.

Jadi, jawaban singkatnya adalah: "ya, Eclipse kind of does." ;)

VonC
sumber
2
Anda dapat mengompilasi ruang kerja dengan proyek Eclipse menggunakan proyek ant4eclipse, tetapi membutuhkan banyak minyak siku karena Anda perlu melakukan semua langkah yang diperlukan secara manual berdasarkan informasi meta yang Anda ekstrak. Saya telah melakukannya untuk proyek internal kami, tetapi saya tidak akan merekomendasikannya kecuali Anda BENAR-BENAR perlu! Kami melakukan :-D
Thorbjørn Ravn Andersen
@ Thorbjørn Ravn Andersen: terima kasih atas umpan balik ini. Anda juga dapat memposting jawaban di utas ini yang menggambarkan jenis "minyak siku" yang terlibat di sini;)
VonC
Nah, apa yang saya retas bersama-sama berdasarkan ant4eclipse - yang membutuhkan file projectSet.psf - untuk meniru fungsionalitas "export runnable jar" tidak cukup sehingga tidak ada jawaban. Selain itu, ini tidak menjalankan Eclipse, tetapi meniru Eclipse menggunakan semut: D
Thorbjørn Ravn Andersen
Menemukan jawaban lama ini: Kami menemukan "emulasi Eclipse build menggunakan file konfigurasi Eclipse" menjadi terlalu rapuh dalam jangka panjang dan saya akan sangat menyarankan orang lain untuk tidak melakukannya. Gunakan proyek Maven sebagai gantinya.
Thorbjørn Ravn Andersen
1
@JeffPuckettII Terima kasih. Saya telah memulihkan tautan.
VonC
8

Setelah 27 tahun, saya juga merasa tidak nyaman mengembangkan IDE. Saya mencoba saran ini (di atas) - dan mungkin tidak mengikuti semuanya dengan benar - jadi saya melakukan penelusuran web dan menemukan apa yang berhasil bagi saya di ' http://incise.org/android-development-on-the- command-line.html '.

Jawabannya sepertinya merupakan kombinasi dari semua jawaban di atas (tolong beri tahu saya jika saya salah dan terima permintaan maaf saya jika demikian).

Seperti disebutkan di atas, eclipse / adt tidak membuat file semut yang diperlukan. Untuk mengkompilasi tanpa IDE gerhana (dan tanpa membuat skrip ant):

1) Buat build.xml di direktori level teratas Anda:

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) Selanjutnya saya menyusun proyek. Saya sedikit bingung dengan permintaan untuk tidak menggunakan 'semut'. Mudah-mudahan - pemohon bermaksud bahwa dia tidak ingin menulis skrip semut apa pun. Saya mengatakan ini karena langkah selanjutnya adalah mengkompilasi aplikasi menggunakan 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) Untuk menginstal apk ke perangkat saya harus menggunakan semut lagi:

 ant target install

    ** my command line looked like  ant debug install

4) Untuk menjalankan proyek di ponsel android saya, saya menggunakan 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) Catatan tambahan: Untuk melihat log dari perangkat, gunakan:

 adb logcat

3B) Catatan samping kedua: Tautan yang disebutkan di atas juga menyertakan instruksi untuk membangun seluruh proyek dari perintah.

Mudah-mudahan, ini akan membantu pertanyaan itu. Saya tahu saya sangat senang menemukan sesuatu tentang topik ini di sini.

Charles Thomas
sumber
1
jika proyek sudah dibangun (dalam mode debug f.ex.) Anda dapat menggunakan ant installduntuk menginstal tanpa membangun
serv-inc
4

Apporoach normal bekerja sebaliknya: Anda membuat build berdasarkan maven atau ant dan kemudian menggunakan integrasi untuk IDE pilihan Anda sehingga Anda tidak bergantung padanya, yaitu esp. penting saat Anda mencoba mempercepat anggota tim baru atau menggunakan server integrasi berkelanjutan untuk pembuatan otomatis. Saya merekomendasikan untuk menggunakan maven dan membiarkannya melakukan pekerjaan berat untuk Anda. Buat file pom dan buat proyek gerhana melalui mvn eclipse: eclipse. HTH

André
sumber
4
Seringkali jauh lebih baik untuk meniru alur kerja saat ini daripada memberi tahu setiap pengembang untuk mengubah perilaku mereka. Apalagi saat Eclipse jauh lebih cepat dari semut.
Thorbjørn Ravn Andersen
2

Pertanyaan ini berisi beberapa link berguna pada build tanpa head, tetapi sebagian besar ditujukan untuk membuat plugin. Saya tidak yakin berapa banyak yang dapat diterapkan pada proyek Java murni.

JesperE
sumber
1

Hanya ingin menambahkan dua sen saya untuk ini. Saya mencoba melakukan seperti yang disarankan @Kieveli untuk non win32 (diulangi di bawah) tetapi tidak berhasil untuk saya (di CentOS dengan Eclipse: Luna):

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

Pada pengaturan khusus saya di CentOS menggunakan Eclipse (Luna) ini berfungsi:

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

Outputnya akan terlihat seperti ini:

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

Tidak begitu yakin mengapa tampaknya melakukannya dua kali, tetapi tampaknya berhasil.

jkwinn26.dll
sumber
0

Hai Hanya tambahan untuk komentar VonC. Saya menggunakan compiler ecj untuk mengkompilasi proyek saya. itu membuang ekspresi bahwa beberapa kelas tidak ditemukan. Tapi proyek ini berjalan baik dengan compiler javac.

Jadi saya menambahkan kelas ke classpath (yang harus kita berikan sebagai argumen) dan sekarang berfungsi dengan baik ... :)

Kulbir Singh


sumber
-3

Jawaban singkat. Tidak. Eclipse tidak memiliki saklar baris perintah seperti Visual Studio untuk membangun proyek.

pdeva
sumber
5
Jawaban singkatnya: ya. Jenis gerhana tidak. Kecuali Anda harus melaporkan semua informasi yang terdapat dalam .project dan .classpath dalam berbagai opsi baris perintah
VonC
Solusi build eksternal (ke Eclipse) seperti semut atau maven biasanya digunakan untuk ini, seperti yang dicatat dalam respons lain.
JR Lawhorne