สร้างโปรเจ็กต์ลงใน JAR โดยอัตโนมัติใน Eclipse


171

ฉันมีโครงการ Eclipse ที่ฉันต้องการให้โครงการ Java ของฉันอยู่ใน JAR โดยอัตโนมัติ ฉันรู้ว่าฉันมีตัวเลือกในการส่งออกโครงการเป็น JAR; ถ้าฉันคลิกขวา; แต่สิ่งที่ฉันกำลังมองหาจริงๆก็คือว่า Eclipse จะสร้าง.classไฟล์ของโครงการโดยอัตโนมัติและวางไว้ในโฟลเดอร์เป้าหมาย มันควรสร้าง JAR โดยอัตโนมัติและคัดลอก JAR ล่าสุดในบางตำแหน่งหรือบางตำแหน่ง

มีตัวเลือกในการกำหนดค่า Eclipse เพื่อสร้าง JARs โดยอัตโนมัติหรือไม่?

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


1
ความคิดเห็นส่วนตัวของฉัน: ใช้ m2e, การรวม Maven ของ Eclipse ดังนั้นมันจึงส่ง jar ให้คุณเป็นส่วนหนึ่งของ build ฉันเพิ่งพยายามใช้ Eclipse โดยไม่มี Maven และไม่อยากจะเชื่อเลยว่าตัวสร้าง Java พื้นฐานคืออะไร
Craig Ringer

1
สำหรับปี 2018 ให้ใช้เครื่องมือสร้างแทนฟังก์ชันการทำงานเฉพาะของ IDE Maven ซื้อความเป็นอิสระของ IDE และการสนับสนุนบรรทัดคำสั่ง
Thorbjørn Ravn Andersen

@ Craig Ringer - มีลิงค์เกี่ยวกับวิธีการทำเช่นนั้นหรือไม่?
nsandersen

คำตอบ:


27

ลองใช้Apache Ant

เป็นไปได้ที่จะใช้ Ant สำหรับการสร้างอัตโนมัติด้วย eclipse ต่อไปนี้เป็นวิธีการ


ฉันใช้ Apache ant อยู่แล้วในการสร้างและสร้าง Jar แต่สิ่งที่ฉันกำลังมองหาจริงๆคือวิธีรอบ ๆ apache ant และใช้ eclipse โดยตรง
Priyank

ขอโทษฉันไม่ได้อ่านบทความในลิงค์ก่อนหน้านี้ แน่นอนมันพูดเกี่ยวกับสิ่งที่ฉันต้องการ ขอบคุณ
Priyank

1
คำตอบโดย Konrad ตรงกับสิ่งที่ OP กำลังมองหา
lycono

lycono ฉันไม่เห็นด้วย - OP ต้องการให้ jar อัปเดตอยู่เสมอและการส่งออกไฟล์ jar ไม่ได้พยายามแก้ไขปัญหานั้น
James Moore

1
ในเดือนกรกฎาคม 2011 บทความที่อ้างอิงโดย @Peter ไม่ได้พูดถึงวิธีการสร้างไฟล์ jar เลย
James Moore

288

คุณต้องการ.jardescไฟล์ พวกเขาจะไม่เตะออกโดยอัตโนมัติ แต่ภายใน 2 คลิก

  1. คลิกขวาที่โครงการของคุณ
  2. เลือก Export > Java > JAR file
  3. เลือกไฟล์ที่รวมและเอาต์พุตชื่อ JAR จากนั้นคลิก Next
  4. ทำเครื่องหมายที่ "บันทึกคำอธิบายของ JAR นี้ในเวิร์กสเปซ" และเลือกชื่อสำหรับ.jardescไฟล์ใหม่

ตอนนี้สิ่งที่คุณต้องทำคือคลิกขวาที่.jardescไฟล์แล้วเลือกCreate JARและมันจะส่งออกในจุดเดียวกัน


น่าเศร้าที่คำตอบนี้ไม่ได้รับผู้โหวตมากขึ้น (หรือคำตอบที่ดีที่สุด) เมื่อหลายเดือนก่อน อ๋อตอนนี้ Konrad หายไปแล้ว
Dan Rosenstark

25
ใน Eclipse Galileo ฉันต้องแทนที่ขั้นตอนที่ 1 ของคุณด้วยไฟล์ -> ส่งออก -> Java -> ไฟล์ JAR
Matt Huggins

9
มีวิธีในการทำให้ 'คลิกขวา -> สร้าง JAR' เป็นแบบอัตโนมัติหรือไม่
Asaf

4
มีวิธีในการ 'คลิกขวา -> สร้าง JAR' โดยอัตโนมัติหรือผูกเข้ากับคำสั่งผสมคีย์?
Pacerier

5
ฉันใช้ "ส่งออก ... -> Java -> ไฟล์ JAR ที่รันได้" เพื่อสร้างสิ่งนั้น
TedTrippin

70

สร้างไฟล์ Ant และบอก Eclipse เพื่อสร้าง มีเพียงสองขั้นตอนและแต่ละขั้นตอนนั้นง่ายด้วยคำแนะนำทีละขั้นตอนด้านล่าง


ขั้นตอนที่ 1 สร้างไฟล์ build.xml และเพิ่มลงในแพ็คเกจ explorer:

<?xml version="1.0" ?>
<!-- Configuration of the Ant build system to generate a Jar file --> 
<project name="TestMain" default="CreateJar">
  <target name="CreateJar" description="Create Jar file">
        <jar jarfile="Test.jar" basedir="." includes="*.class" />
  </target>
</project>

Eclipse ควรมีลักษณะเหมือนภาพหน้าจอด้านล่าง หมายเหตุไอคอน Ant บน build.xml Build.xml ในโครงการ Eclipse

ขั้นตอนที่ 2 คลิกขวาที่รูทโหนดในโครงการ - เลือก Properties - เลือกผู้สร้าง - เลือกใหม่ - เลือกรูปร่างมด - ในแท็บหลักเสร็จสมบูรณ์เส้นทางไปยังแฟ้ม build.xml ที่ในถังโฟลเดอร์

การกำหนดค่าตัวสร้างมด ขั้นตอนการสร้าง - แท็บเป้าหมาย

ตรวจสอบผลลัพธ์

หน้าต่างเอาต์พุต Eclipse (ชื่อ Console) ควรแสดงข้อมูลต่อไปนี้หลังจากบิลด์:

Buildfile: /home/<user>/src/Test/build.xml

CreateJar:
         [jar] Building jar: /home/<user>/src/Test/Test.jar
BUILD SUCCESSFUL
Total time: 152 milliseconds

แก้ไข: ความเห็นที่เป็นประโยชน์โดย @yeoman และ @betlista

@yeoman ฉันคิดว่าการรวมที่ถูกต้องน่าจะเป็น /.class ไม่ใช่ * .class เนื่องจากคนส่วนใหญ่ใช้แพ็คเกจและการค้นหาแบบเรียกซ้ำสำหรับไฟล์คลาสจึงเหมาะสมกว่าการรวมแบบแบน

@betlista ฉันจะแนะนำให้ไม่มี build.xml ในโฟลเดอร์ src


2
ใช่คุณสามารถเลือกเป้าหมายสำหรับขั้นตอนการสร้างดังต่อไปนี้: หลังการสร้างด้วยตนเอง, การสร้างด้วยตนเอง, การสร้างอัตโนมัติและระหว่างการทำความสะอาด รถยนต์รูปร่างควรให้สิ่งที่คุณต้องการ :)
โทมัส Bratt

8
หลังจากลองทั้งสองวิธีนี้ดูเหมือนจะดีกว่าของ Konrad มันต้องการให้คุณหาพา ธ ในไฟล์บิลด์ของคุณด้วยตนเอง แต่มันจะอนุญาตให้บิลด์อัตโนมัติ (แทนการคลิก 2 ครั้ง) และอนุญาตให้ปรับแต่งได้ง่าย (คัดลอก jar หลังจากสร้างบิลด์) ต่อไปนี้เป็นวิธีสร้างไฟล์ jar เมื่อมีไฟล์<jar jarfile="dist/mypackage.jar" basedir="bin/" includes="**/*.class" />
บิวด์

3
+1 วิธีนี้เป็นคำตอบที่ยอมรับไม่ได้และยังไม่ได้โหวตมากที่สุด
Juan Garcia

2
ขอบคุณมาก. ฉันจะแนะนำให้ไม่ให้มีbuild.xmlในโฟลเดอร์ src แต่ส่วนที่เหลือก็ใช้งานได้ดีน่าทึ่ง!
Betlista

1
ฉันคิดว่าการรวมที่ถูกต้องน่าจะเป็น/ .class ไม่ใช่ * .class เนื่องจากผู้คนส่วนใหญ่ใช้แพ็คเกจและการค้นหาไฟล์คลาสแบบเรียกซ้ำจึงเหมาะสมกว่าการรวมแบบแบน จะลบ +1 ของฉันออกไปแล้วเพราะคำตอบมักจะไม่ทำงานตามปกติ
Yeoman

13

สิ่งนี้เป็นไปได้โดยการกำหนด Builder ที่กำหนดเองใน eclipse (ดูลิงค์ในคำตอบของ Peter) อย่างไรก็ตามถ้าโครงการของคุณมีขนาดเล็กมากมันอาจทำให้พื้นที่ทำงานของคุณช้าลงอย่างไม่น่ารับ Autobuild สำหรับไฟล์คลาสเกิดขึ้นแบบเพิ่มขึ้นนั่นคือเฉพาะคลาสที่ได้รับผลกระทบจากการเปลี่ยนแปลงเท่านั้นที่จะคอมไพล์ใหม่ แต่ไฟล์ JAR จะต้องถูกสร้างและคัดลอกใหม่ทั้งหมดทุกครั้งที่คุณบันทึกการเปลี่ยนแปลง


5

เกี่ยวกับคำตอบของปีเตอร์และการเพิ่มของมิเชลคุณอาจพบว่าฉันจะสร้างไฟล์. jar อัตโนมัติในโครงการ Eclipse Javaได้อย่างไร เพราะแม้คุณจะมีไฟล์ "* .jardesc" ในโปรเจคของคุณคุณก็ต้องรันมันด้วยตนเอง อาจทำให้ "eclipse click วุ่นวาย" ของคุณเย็นลงเล็กน้อย


1

ใช้คำตอบของThomas Brattด้านบนเพียงตรวจสอบให้แน่ใจว่า build.xml ของคุณได้รับการกำหนดค่าอย่างถูกต้อง:

<?xml version="1.0" ?>
<!-- Configuration of the Ant build system to generate a Jar file --> 
<project name="TestMain" default="CreateJar">
  <target name="CreateJar" description="Create Jar file">
        <jar jarfile="Test.jar" basedir="bin/" includes="**/*.class" />
  </target>
</project>

(สังเกตเห็นเครื่องหมายดอกจันคู่ - มันจะบอกให้สร้างเพื่อค้นหาไฟล์. class ในไดเรกทอรีย่อยทั้งหมด)


0

การสร้างตัวเรียกใช้งานตัวสร้างเป็นปัญหาเนื่องจาก 2 โครงการไม่สามารถมีชื่อการสร้างเครื่องมือภายนอกเหมือนกัน แต่ละชื่อจะต้องไม่ซ้ำกัน ขณะนี้ฉันกำลังเผชิญปัญหานี้เพื่อสร้างงานของฉันโดยอัตโนมัติและคัดลอก JAR ไปยังตำแหน่งภายนอก

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

ผู้คนสามารถลองใช้ปลั๊กอินการสร้าง ZIP ของ IBM http://www.ibm.com/developerworks/websphere/library/techarticles/0112_deboer/deboer2.html#download

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.