Komut Satırından Eclipse Java Projesi Oluşturun


118

Eclipse tabanlı bir Java projesini komut satırından derlemenin bir yolu var mı?

Derlememi otomatikleştirmeye çalışıyorum (FinalBuilder'ı karınca değil kullanarak) ve ne Java ne de Eclipse uzmanıyım. Muhtemelen bunu doğrudan java komut satırı seçenekleriyle nasıl yapacağımı çözebilirim, ancak Eclipse projesi çok fazla boşa harcanan çaba gibi geliyor.

Eclipse projesini komut satırı aracılığıyla derlemenin bir yolu yoksa, gerekli java komut satırını Eclipse içinden oluşturmanın bir yolu var mı? Veya perde arkasında yaptığı derleme adımlarını bulmak için etrafta dolaşabileceğim bazı dosyalar var mı?


Çocuklar, ben yok cevabını arıyorum DEĞİL karınca bulunur. Orijinal soruyu yinelememe izin verin ....... Komut satırından Eclipse projesi oluşturmanın bir yolu var mı?

Görsel stüdyo için böyle bir şey yapabildiğim için bunun mantıksız bir soru olduğunu sanmıyorum:

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

3
Bunun için nasıl bir eklenti / jar yok !!
Kieveli

1
Tamam ... Yeni bir doğru cevap ekledim.
Kieveli

Yanıtlar:


61

Komut satırından bir çalışma alanı aracılığıyla bir tutulma projesi oluşturabilirsiniz:

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

Çalışma jdt aptalanınızı otomatik olarak oluşturmak için eklentiyi kullanır . Bu aynı zamanda 'Başsız Yapı' olarak da bilinir. Anlaması çok zor. Win32 exe kullanmıyorsanız, şunu deneyebilirsiniz:

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

Güncelleme

Birkaç yıl önce tutulma startup.jar, "ekinoks başlatıcı" ile değiştirildi

https://wiki.eclipse.org/Equinox_Launcher

Eclipse Mars'ta (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

-dataParametre için çalışma alanındaki konumunu belirtir.

Ekinoks başlatıcısının sürüm numarası, sahip olduğunuz tutulma sürümüne bağlı olacaktır.


4
Bu projeden çoktan ayrılmama ve bu cevabın gerçekten işe yarayıp yaramadığını doğrulayamamama rağmen, kabul edilen cevabı buna değiştiriyorum. Çünkü Eclipse'in gerçekten bir komut satırı anahtarına sahip olduğunu gösterir.
Keith G

3
Tek bir düşünce - bu sadece önceden var olan çalışma alanları için işe yarıyor gibi görünüyor. Sanırım bu, projeyi kaynak kontrolünden kontrol etmeyi ve bu şekilde inşa etmeyi zorlaştırıyor.
John

Çalışma alanımın svn deposuna bağlı olduğuna inanıyorum. Ya göreceli yolları ya da eşleşen dizin yapıları vardı.
Kieveli

2
Derleme sonuçlarını nasıl görüyorsunuz? Bunu denedim ve şu çıktıyı aldım: "Çalışma alanı oluşturma", ancak derlemenin başarılı olup olmadığına dair bir belirti alamadım.
Dikla

Çalışma alanınızı bir komut satırı karınca betiği aracılığıyla da oluşturabilirsiniz. Help.eclipse.org/indigo/…
yeniden

22

André'nin cevabını tamamlamak için, bir karınca çözümü Emacs, JDEE, Ant ve Eclipse Java Derleyicisinde anlatılana benzeyebilir :

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

Compilerarg öğesi ayrıca eclipse derleyicisine ek komut satırı argümanlarını iletmenize izin verir.

Bir bulabilirsiniz burada tam karınca komut örneği olacağını bir komut satırında çağrılan ile:

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

ANCAK bunların hepsinde karınca var, Keith'in peşinde olduğu şey bu değil.

Bir toplu derleme için, bakınız Derleme Java kodu , özellikle bölümüne " toplu derleyicisi kullanarak "

Toplu derleyici sınıfı, JDT Core eklentisinde bulunur. Sınıfın adı org.eclipse.jdt.compiler.batch.BatchCompiler şeklindedir. Plugins / org.eclipse.jdt.core_3.4.0..jar olarak paketlenmiştir. 3.2'den beri ayrı bir indirme olarak da mevcuttur. Dosyanın adı ecj.jar'dır.
3.3'ten bu yana, bu jar ayrıca jsr199 (Derleyici API) ve jsr269 (Ek açıklama işleme) desteği içerir. Ek açıklama işleme desteğini kullanmak için 1,6 VM gereklidir.

Toplu derleyiciyi komut satırından çalıştırmak,

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

veya:

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

Tüm java derleme seçenekleri de bu bölümde detaylandırılmıştır.

Visual Studio komut satırı derleme özelliğiyle arasındaki fark, Eclipse'in .project ve .classpath'i bir komut satırı bağımsız değişkeninde doğrudan okumadığı görülüyor . Aynı derleme sonucunu elde etmek için .project ve .classpath içinde bulunan tüm bilgileri çeşitli komut satırı seçeneklerinde rapor etmeniz gerekir.

Öyleyse, kısa cevap: "evet, Eclipse öyle yapar." ;)


2
Ant4eclipse projesini kullanarak Eclipse projesi ile bir çalışma alanı derlemek mümkündür, ancak çıkardığınız meta bilgilerine göre gerekli tüm adımları manuel olarak yapmanız gerektiğinden çok fazla dirsek yağına ihtiyaç duyar. Bunu şirket içi projelerimiz için yaptım, ancak GERÇEKTEN ihtiyacınız olmadıkça tavsiye etmem! Yaptık :-D
Thorbjørn Ravn Andersen

@ Thorbjørn Ravn Andersen: Bu geri bildirim için teşekkür ederim. Buradaki "dirsek gresi" nin türünü gösteren bu konuya bir cevap da gönderebilirsiniz;)
VonC

Pekala, "çalıştırılabilir kavanozu dışa aktar" işlevini taklit etmek için bir projectSet.psf dosyası gerektiren ant4eclipse'e dayanarak birlikte hacklediğim şey pek de cevap değil. Ayrıca, Eclipse'i çalıştırmıyor, karınca kullanarak Eclipse'i taklit ediyor: D
Thorbjørn Ravn Andersen

Bu eski yanıta rastladık: "Eclipse yapılandırma dosyalarını kullanarak Eclipse derlemesini taklit et" in uzun vadede çok kırılgan olduğunu gördük ve başkalarına bu şekilde gitmemelerini şiddetle tavsiye edeceğim. Bunun yerine Maven projelerini kullanın.
Thorbjørn Ravn Andersen

1
@JeffPuckettII Teşekkürler. Bağlantıyı geri yükledim.
VonC

8

27 yıldan sonra ben de bir IDE'de gelişmekten rahatsız oluyorum. Bu önerileri (yukarıda) denedim - ve muhtemelen her şeyi doğru izlemedim - bu yüzden bir web araması yaptım ve benim için neyin işe yaradığını ' http://incise.org/android-development-on-the- adresinde buldum. komut satırı.html '.

Yanıt, yukarıdaki tüm yanıtların bir birleşimi gibi görünüyordu (lütfen bana hatalıysam söyleyin ve öyleyse özürümü kabul edin)

Yukarıda bahsedildiği gibi eclipse / adt gerekli karınca dosyalarını oluşturmaz. Tutulma IDE'si olmadan (ve karınca betikleri oluşturmadan) derlemek için:

1) En üst düzey dizininizde build.xml oluşturun:

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) Sonra projeyi derliyorum. 'Karınca' kullanmama isteği beni biraz karıştırdı. Umarım, talep eden kişi karınca senaryosu yazmak istemediğini kastetti. Bunu söylüyorum çünkü bir sonraki adım uygulamayı ant kullanarak derlemek.

 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'yi cihaza yüklemek için ant'ı tekrar kullanmak zorunda kaldım:

 ant target install

    ** my command line looked like  ant debug install

4) Projeyi android telefonumda çalıştırmak için adb kullanıyorum.

 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) Bir yan not: Günlüğü cihaz kullanımından görüntülemek için:

 adb logcat

3B) İkinci bir yan not: Yukarıda bahsedilen bağlantı aynı zamanda tüm projenin komuttan oluşturulması için talimatlar içerir.

Umarım bu soruya yardımcı olur. Bu konuyla ilgili bir şey bulduğum için gerçekten mutlu olduğumu biliyorum .


1
proje zaten oluşturulmuşsa (hata ayıklama modunda f.ex.) bunu ant installdinşa etmeden kurmak için kullanabilirsiniz
serv-inc

4

Normal yaklaşım tam tersi şekilde işler: Yapınızı maven veya karıncaya dayalı olarak yaratırsınız ve daha sonra IDE'niz için seçtiğiniz entegrasyonları kullanırsınız, böylece ondan bağımsız olursunuz, bu da özellikle. yeni ekip üyelerini hızlandırmaya çalıştığınızda veya otomatikleştirilmiş derlemeler için sürekli bir tümleştirme sunucusu kullanmaya çalıştığınızda önemlidir. Maven'i kullanmanızı ve ağır işi sizin için yapmasına izin vermenizi öneririm. Bir pom dosyası oluşturun ve mvn eclipse: eclipse ile eclipse projesini oluşturun. HTH


4
Her geliştiriciye davranışını değiştirmesini söylemek yerine mevcut iş akışını taklit etmek çoğu zaman çok daha güzeldir. Özellikle Eclipse karıncadan çok daha hızlı olduğunda.
Thorbjørn Ravn Andersen

2

Bu soru , başsız yapılarda bazı yararlı bağlantılar içerir, ancak bunlar çoğunlukla eklenti oluşturmaya yöneliktir. Ne kadarının saf Java projelerine uygulanabileceğinden emin değilim.


1

Sadece buna iki sentimi eklemek istedim. @ Kieveli'nin win32 olmayanlar için önerdiği gibi yapmayı denedim (aşağıda tekrarlandı) ancak benim için işe yaramadı (Eclipse ile CentOS'ta: Luna):

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

Eclipse (Luna) kullanan CentOS'taki özel kurulumumda bu işe yaradı:

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

Çıktı şunun gibi görünmelidir:

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

Görünüşe göre neden iki kez yaptığından tam olarak emin değilim, ama işe yarıyor gibi görünüyor.


0

Merhaba VonC yorumlarına ek olarak. Projemi derlemek için ecj derleyicisini kullanıyorum. bazı sınıfların bulunamadığına dair bir açıklama geliyordu. Ancak proje javac derleyicisiyle iyi bir yapı oluşturuyordu.

Bu yüzden sınıfları sınıf yoluna ekledim (argüman olarak geçmemiz gerekiyor) ve şimdi sorunsuz çalışıyor ... :)

Kulbir Singh


-3

Kısa cevap. Hayır. Eclipse, proje oluşturmak için Visual Studio gibi bir komut satırı anahtarına sahip değildir.


5
Kısa cevap: evet. Eclipse öyle bir şey. .Project ve .classpath içindeki tüm bilgileri çeşitli komut satırı seçeneklerinde bildirmeniz gerekmesinin dışında
VonC

Diğer yanıtlarda belirtildiği gibi, genellikle bunun için karınca veya maven gibi harici (Eclipse'e) inşa çözümleri kullanılır.
JR Lawhorne
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.