สร้าง Eclipse Java Project จาก Command Line


118

มีวิธีคอมไพล์โปรเจ็กต์ Java ที่ใช้ Eclipse จากบรรทัดรับคำสั่งหรือไม่?

ฉันกำลังพยายามสร้างบิลด์ของฉันโดยอัตโนมัติ (โดยใช้ FinalBuilder ไม่ใช่มด) และฉันไม่ใช่ผู้เชี่ยวชาญด้าน Java หรือ Eclipse ฉันสามารถหาวิธีทำได้ด้วยตัวเลือกบรรทัดคำสั่ง java แบบตรง แต่โปรเจ็กต์ Eclipse รู้สึกว่าเสียความพยายามไปมาก

ในกรณีที่ไม่มีวิธีการคอมไพล์โปรเจ็กต์ Eclipse ผ่านทางบรรทัดคำสั่งมีวิธีสร้างบรรทัดคำสั่ง java ที่ต้องการจากภายใน Eclipse หรือไม่? หรือมีไฟล์บางไฟล์ที่ฉันสามารถค้นหาขั้นตอนการคอมไพล์ที่ทำอยู่เบื้องหลังได้หรือไม่?


Guys, ฉันกำลังมองหาคำตอบที่ไม่ไม่รวมถึงมด ให้ฉันทบทวนคำถามเดิมอีกครั้ง ....... มีวิธีสร้างโปรเจ็กต์ Eclipse จากบรรทัดคำสั่งหรือไม่?

ฉันไม่คิดว่านี่เป็นคำถามที่ไม่สมเหตุสมผลเนื่องจากฉันสามารถทำอะไรแบบนี้กับสตูดิโอวิชวล:

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

3
ไม่มี Plugin / jar นี้ได้ยังไง !!
Kieveli

1
โอเค ... ฉันเพิ่มคำตอบใหม่ที่ถูกต้อง
Kieveli

คำตอบ:


61

คุณสามารถสร้างโปรเจ็กต์ eclipse ผ่านพื้นที่ทำงานจากบรรทัดรับคำสั่ง:

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

ใช้jdt aptปลั๊กอินเพื่อสร้างพื้นที่ทำงานของคุณโดยอัตโนมัติ สิ่งนี้เรียกอีกอย่างว่า 'Headless Build' ยากที่จะคิดออก หากคุณไม่ได้ใช้ win32 exe คุณสามารถลองสิ่งนี้:

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

ปรับปรุง

หลายปีที่ผ่านมาคราสถูกแทนที่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พารามิเตอร์ระบุสถานที่ตั้งของพื้นที่ทำงานของคุณ

หมายเลขเวอร์ชันสำหรับตัวเรียกใช้งาน equinox จะขึ้นอยู่กับเวอร์ชันของคราสที่คุณมี


4
แม้ว่าฉันจะย้ายจากโครงการนี้มานานแล้วและไม่สามารถตรวจสอบได้ว่าคำตอบนี้ใช้งานได้จริงหรือไม่ แต่ฉันก็เปลี่ยนคำตอบที่ยอมรับเป็นคำตอบนี้ เพราะมันบ่งชี้ว่า Eclipse มีสวิตช์บรรทัดคำสั่ง
Keith G

3
เพียงแค่ความคิดเดียว - ดูเหมือนว่าจะใช้ได้กับพื้นที่ทำงานที่มีอยู่แล้วเท่านั้น ฉันเดาว่าสิ่งนี้ทำให้ยากตัวอย่างเช่นชำระเงินโครงการจากการควบคุมแหล่งที่มาและสร้างด้วยวิธีนี้
ยอห์น

ฉันเชื่อว่าพื้นที่ทำงานของฉันมุ่งมั่นกับที่เก็บ svn มันมีเส้นทางสัมพัทธ์หรือโครงสร้างไดเร็กทอรีที่ตรงกัน
Kieveli

2
คุณจะเห็นผลการสร้างได้อย่างไร? ฉันได้ลองสิ่งนี้แล้วและได้ผลลัพธ์: "การสร้างพื้นที่ทำงาน" แต่ฉันไม่ได้รับการบ่งชี้ว่าการสร้างสำเร็จหรือล้มเหลว
Dikla

คุณยังสามารถสร้างพื้นที่ทำงานของคุณผ่านสคริปต์มดบรรทัดคำสั่ง ดูhelp.eclipse.org/indigo/…
reprogrammer

22

เพื่อให้คำตอบของ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 ยังอนุญาตให้คุณส่ง args บรรทัดคำสั่งเพิ่มเติมไปยังคอมไพเลอร์ eclipse

คุณสามารถค้นหาตัวอย่างant script แบบเต็มได้ที่นี่ซึ่งจะถูกเรียกใช้ในบรรทัดคำสั่งด้วย:

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 มันรวมอยู่ในปลั๊กอิน / org.eclipse.jdt.core_3.4.0..jar ตั้งแต่ 3.2 เป็นต้นมามีให้ดาวน์โหลดแยกต่างหาก ชื่อของไฟล์คือ ecj.jar
ตั้งแต่ 3.3 jar นี้ยังรองรับ jsr199 (Compiler API) และการสนับสนุน jsr269 (Annotation processing) ในการใช้การสนับสนุนการประมวลผลคำอธิบายประกอบจำเป็นต้องมี 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 คุณลักษณะบรรทัดคำสั่งรวบรวมคือว่าคราสดูเหมือนจะไม่โดยตรงอ่าน .project และ .classpath ในอาร์กิวเมนต์บรรทัดคำสั่ง คุณต้องรายงานข้อมูลทั้งหมดที่อยู่ใน. project และ. classpath ในตัวเลือกบรรทัดคำสั่งต่างๆเพื่อให้ได้ผลลัพธ์การคอมไพล์ที่เหมือนกัน

ดังนั้นคำตอบสั้น ๆ คือ: "ใช่ Eclipse เป็นอย่างไร" ;)


2
เป็นไปได้ที่จะคอมไพล์พื้นที่ทำงานกับโปรเจ็กต์ Eclipse โดยใช้โปรเจ็กต์ ant4eclipse แต่ต้องใช้จาระบีข้อศอกจำนวนมากเนื่องจากคุณต้องทำขั้นตอนที่จำเป็นทั้งหมดด้วยตนเองตามข้อมูลเมตาที่คุณดึงออกมา ฉันเคยทำมาแล้วสำหรับโครงการในบ้านของเรา แต่ฉันจะไม่แนะนำให้ทำจนกว่าคุณจะต้องการจริงๆ! เราทำ :-D
Thorbjørn Ravn Andersen

@ Thorbjørn Ravn Andersen: ขอบคุณสำหรับคำติชมนี้ นอกจากนี้คุณยังสามารถโพสต์คำตอบในชุดข้อความนี้ซึ่งแสดงถึงชนิดของ "จารบีข้อศอก" ที่เกี่ยวข้องได้ที่นี่)
VonC

สิ่งที่ฉันแฮ็กเข้าด้วยกันตาม ant4eclipse ซึ่งต้องใช้ไฟล์ projectSet.psf เพื่อเลียนแบบฟังก์ชัน "export runnable jar" จึงไม่ได้รับคำตอบ นอกจากนี้มันไม่ได้เรียกใช้ Eclipse แต่เลียนแบบ Eclipse โดยใช้มด: D
Thorbjørn Ravn Andersen

เจอคำตอบเก่า ๆ นี้: เราพบว่า "เลียนแบบ Eclipse build โดยใช้ไฟล์คอนฟิกูเรชัน Eclipse" เปราะเกินไปในระยะยาวและฉันจะแนะนำอย่างยิ่งให้คนอื่นไม่ไปทางนั้น ใช้โครงการ Maven แทน
Thorbjørn Ravn Andersen

1
@JeffPuckettII ขอบคุณครับ ฉันได้คืนค่าลิงก์แล้ว
VonC

8

หลังจาก 27 ปีฉันเองก็รู้สึกไม่สบายใจที่จะพัฒนา IDE ฉันลองทำตามคำแนะนำเหล่านี้ (ด้านบน) - และอาจทำตามทุกอย่างไม่ถูกต้อง - ดังนั้นฉันจึงค้นหาเว็บและพบสิ่งที่เหมาะกับฉันที่ ' http://incise.org/android-development-on-the- command-line.html '.

คำตอบดูเหมือนจะเป็นการรวมคำตอบทั้งหมดข้างต้น (โปรดบอกฉันว่าฉันผิดหรือไม่และยอมรับคำขอโทษของฉันถ้าเป็นเช่นนั้น)

ดังที่ได้กล่าวมาแล้ว eclipse / adt ไม่สร้างไฟล์ ant ที่จำเป็น ในการคอมไพล์โดยไม่มี eclipse IDE (และไม่ต้องสร้างสคริปต์มด):

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 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 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) หมายเหตุด้านที่สอง: ลิงก์ที่กล่าวถึงข้างต้นยังมีคำแนะนำในการสร้างโครงการทั้งหมดจากคำสั่ง

หวังว่านี่จะช่วยตอบคำถามได้ ฉันรู้ว่าฉันมีความสุขมากที่พบอะไรเกี่ยวกับหัวข้อนี้ที่นี่


1
หากโครงการสร้างขึ้นแล้ว (ในโหมดดีบัก f.ex. ) คุณสามารถใช้ant installdเพื่อติดตั้งโดยไม่ต้องสร้าง
serv-inc

4

apporoach ปกติทำงานในลักษณะอื่น ๆ : คุณสร้างงานสร้างของคุณตามมาเวนหรือมดจากนั้นใช้การผสานรวมสำหรับ IDE ที่คุณเลือกเพื่อให้คุณเป็นอิสระจากมันซึ่งก็คือ esp สำคัญเมื่อคุณพยายามดึงสมาชิกใหม่ในทีมให้เร็วขึ้นหรือใช้เซิร์ฟเวอร์การรวมที่ต่อเนื่องสำหรับการสร้างอัตโนมัติ ฉันแนะนำให้ใช้ maven และปล่อยให้มันช่วยยกของหนักให้คุณ สร้างไฟล์ pom และสร้างโปรเจ็กต์ eclipse ผ่าน mvn eclipse: eclipse HTH


4
การเลียนแบบขั้นตอนการทำงานปัจจุบันเป็นเรื่องที่ดีกว่ามากแทนที่จะบอกให้นักพัฒนาทุกคนเปลี่ยนพฤติกรรม โดยเฉพาะอย่างยิ่งเมื่อ Eclipse เร็วกว่ามดมาก
Thorbjørn Ravn Andersen

2

คำถามนี้มีลิงก์ที่มีประโยชน์บางอย่างในการสร้างแบบไม่มีหัว แต่ส่วนใหญ่มุ่งไปที่การสร้างปลั๊กอิน ฉันไม่แน่ใจว่าสามารถใช้กับโปรเจ็กต์ Java บริสุทธิ์ได้มากแค่ไหน


1

แค่อยากจะเพิ่มสองเซ็นต์ของฉันเข้าไป ฉันลองทำตามที่ @Kieveli แนะนำสำหรับไม่ใช่ win32 (ทำซ้ำด้านล่าง) แต่มันไม่ได้ผลสำหรับฉัน (บน CentOS ด้วย Eclipse: Luna):

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

ในการตั้งค่าเฉพาะของฉันบน CentOS โดยใช้ Eclipse (Luna) สิ่งนี้ได้ผล:

$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

ไม่ค่อยแน่ใจว่าทำไมเห็นได้ชัดถึงสองครั้ง แต่ดูเหมือนว่าจะได้ผล


0

สวัสดีนอกจากความคิดเห็นของ VonC แล้ว ฉันใช้คอมไพเลอร์ ecj เพื่อรวบรวมโปรเจ็กต์ของฉัน มันเป็นการขว้างปา expcetion ที่ไม่พบบางคลาส แต่โปรเจ็กต์ทำงานได้ดีด้วยคอมไพเลอร์ javac

ดังนั้นฉันจึงเพิ่มคลาสลงใน classpath (ซึ่งเราต้องผ่านเป็นอาร์กิวเมนต์) และตอนนี้มันก็ทำงานได้ดี ... :)

กุลบีร์ซิงห์


-3

คำตอบสั้น ๆ ไม่ Eclipse ไม่มีสวิตช์บรรทัดคำสั่งเช่น Visual Studio เพื่อสร้างโครงการ


5
คำตอบสั้น ๆ : ใช่ ชนิดของ Eclipse ไม่ ยกเว้นคุณต้องรายงานข้อมูลทั้งหมดที่มีอยู่ใน. project และ.
classpath ใน

ภายนอก (ถึง Eclipse) สร้างโซลูชันเช่น ant หรือ maven มักจะใช้สำหรับสิ่งนี้ดังที่ระบุไว้ในการตอบสนองอื่น ๆ
JR Lawhorne
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.