มีอะไรในไฟล์ Eclipse .classpath / .project


143

เราเพิ่งมีปัญหากับโครงการ Eclipse สำหรับสมาชิกในทีมของเรา Tomcat ไม่ได้ปรับใช้ JAR ของแอปพลิเคชัน

ในที่สุดเราก็สังเกตเห็นว่า.classpathไฟล์ Eclipse นั้นไม่เหมือนกับสมาชิกในทีมที่โครงการก็โอเค เราแทนที่.classpathไฟล์ด้วยไฟล์เดียวจากโครงการที่ตกลงและการปรับใช้ Tomcat เสร็จสมบูรณ์

เพิ่งออกมาจากความอยากรู้อยากเห็นและรู้ว่าจะต้องมองอะไรในอนาคตหากมีอะไรผิดปกติอะไรคือสิ่งที่อยู่ภายใน.classpathและ.projectไฟล์ ฉันจะเพิ่มอะไรในนั้นความหมายทั้งหมดคืออะไร


เป็นไฟล์. classpath เฉพาะกับ Java หรือไม่ คำถามนี้ดูเหมือนว่าผู้ไม่เชื่อเรื่องภาษาส่วนใหญ่ แต่จากคำตอบนี้ดูเหมือนว่าจะเกี่ยวข้องกับ Java เท่านั้น
Casey Kuball

ที่เกี่ยวข้อง, stackoverflow.com/questions/13960556/…
TT--

คำตอบ:


144

Eclipse เป็นสภาพแวดล้อมรันไทม์สำหรับปลั๊กอิน แทบทุกอย่างที่คุณเห็นใน Eclipse เป็นผลลัพธ์ของปลั๊กอินที่ติดตั้งบน Eclipse แทนที่จะเป็น Eclipse

.projectไฟล์จะดูแลโดยแพลตฟอร์มหลัก Eclipse และเป้าหมายของตนคือการอธิบายโครงการจากทั่วไปปลั๊กอินอิสระมุมมองคราส ชื่อโครงการคืออะไร มันหมายถึงโครงการอื่น ๆ ในพื้นที่ทำงาน? ผู้สร้างที่ใช้ในการสร้างโครงการคืออะไร (จำไว้ว่าแนวคิดของ "build" ไม่เกี่ยวข้องกับโครงการ Java โดยเฉพาะ แต่รวมถึงโครงการประเภทอื่น ๆ ด้วย)

.classpathไฟล์จะถูกเก็บไว้โดยคุณลักษณะ JDT ของ Eclipse ( คุณลักษณะ = ตั้งปลั๊กอิน) JDT เก็บไฟล์ "meta" ดังกล่าวหลายไฟล์ในโครงการ (ดู.settingsไดเรกทอรีภายในโครงการ); .classpathไฟล์เป็นเพียงหนึ่งในพวกเขา โดยเฉพาะ.classpathไฟล์ที่มีข้อมูลที่คุณสมบัติ JDT ต้องการเพื่อรวบรวมโครงการอย่างถูกต้อง: โฟลเดอร์ซอร์สของโครงการ (นั่นคืออะไรที่จะรวบรวม); โฟลเดอร์การส่งออก (ที่จะรวบรวมไป ); และรายการ classpath (เช่นโครงการอื่น ๆ ในเวิร์กสเปซไฟล์ JAR ตามอำเภอใจในระบบไฟล์และอื่น ๆ )

การคัดลอกไฟล์ดังกล่าวจากเครื่องหนึ่งไปยังอีกเครื่องหนึ่งแบบสุ่มอาจมีความเสี่ยง ตัวอย่างเช่นหากไฟล์ JAR โดยพลการถูกวางไว้บน classpath (นั่นคือไฟล์ JAR ที่อยู่นอกเวิร์กสเปซและถูกอ้างถึงโดยการตั้งชื่อพา ธ สัมบูรณ์) .classpathไฟล์จะแสดงผลแบบไม่พกพาและต้องแก้ไขเพื่อให้ แบบพกพา มีแนวปฏิบัติที่ดีที่สุดบางประการที่สามารถปฏิบัติตามเพื่อรับประกันการ.classpathพกพาไฟล์


58
ในฐานะที่เป็นบุคคลภายนอกสำหรับสิ่งทั้งหมดนี้ทั้งหมดแปลว่า "Eclipse จัดการทุกอย่างเกี่ยวกับการจัดการพื้นที่ทำงานของโครงการเป็นศิลปะสีดำที่ไม่น่าเชื่อถือซึ่งยากเกินกว่าที่ใครจะเข้าใจ"
Warren P

1
@Isaac - ออกจากความอยากรู้ในกรณีที่ฉันจัดการโครงการด้วยgitและMavenหมายความว่าฉันมี (สำหรับความเรียบง่าย) โฟลเดอร์ "root" ของที่เก็บ (โครงการ) ด้วยsrcโฟลเดอร์เดียว(เก็บไฟล์ "hello world" อย่างง่าย.java) และpox.xmlไฟล์ของโครงการ- ดังนั้นถ้าฉันเข้าใจคุณถูกต้องไม่มีความจำเป็น (หรืออาจจำเป็นไม่จำเป็น) ในการเก็บ: .project, .classpathและ.settings/ไฟล์ / โฟลเดอร์เช่นกันในgitพื้นที่เก็บข้อมูล (เช่น - เพิ่มลงใน.gitignoreไฟล์ตัวอย่าง)?
Guy Avraham

1
@GuyAvraham ที่ขึ้นอยู่กับวิธีที่คุณทำงานกับ Eclipse และโดยเฉพาะ - คุณจะเริ่มต้นพื้นที่ทำงานอย่างไร คุณเริ่มต้น Eclipse บนพื้นที่ทำงานใหม่แล้วใช้ "อิมพอร์ตโครงการ Maven ที่มีอยู่" หรือไม่ ถ้าเป็นเช่นนั้นคุณพูดถูก - ไม่มีไฟล์ใดที่จำเป็นสำหรับm2eclipseการดูแลคุณ (หรืออย่างน้อยนั่นคือสิ่งที่ควรทำ)
Isaac

1
@buncis ไม่ควรอยู่ใน.project .gitignoreเกี่ยวกับ.classpath- ถ้าคุณใช้m2eclipseและพื้นที่ทำงานของคุณมีการกำหนดค่าในการปรับปรุงโครงการ Maven ในการเริ่มต้นแล้วคุณควรจะตกลงกับการเพิ่ม.classpathไป.gitignoreแต่ฉันไม่ได้ทดสอบตัวเอง
ไอแซค

1
@buncis เพิ่งแก้ไขความคิดเห็นล่าสุด เห็นได้ชัดว่า M2E ทำงานได้ดีมากในปัจจุบันการกำหนดค่าโครงการ ฉันเพิ่งทำงานกับ codebase ประมาณ 150 โครงการ Java ทุกประเภท ฉันออก.projectและจากทั้งหมดของพวกเขาและเพิ่มไปยัง.classpath .gitignoreทั้งหมดทำงานได้ดีและฉันไม่จำเป็นต้องอัปเดตไฟล์เหล่านี้ใน Git อย่างไม่สิ้นสุด
ไอแซ

37

.project

เมื่อโครงการถูกสร้างขึ้นในพื้นที่ทำงานไฟล์คำอธิบายโครงการจะถูกสร้างขึ้นโดยอัตโนมัติซึ่งอธิบายถึงโครงการ วัตถุประสงค์เดียวของไฟล์นี้คือการทำให้โครงการอธิบายตนเองเพื่อให้โครงการที่ซิปหรือปล่อยไปยังเซิร์ฟเวอร์สามารถสร้างใหม่ได้อย่างถูกต้องในพื้นที่ทำงานอื่น

.classpath

Classpath ระบุซอร์สไฟล์ Java และไฟล์ทรัพยากรในโครงการที่พิจารณาโดยตัวสร้าง Java และระบุวิธีการค้นหาประเภทนอกโครงการ ตัวสร้าง Java รวบรวมไฟล์ต้นฉบับของ Java ลงในโฟลเดอร์เอาต์พุตและคัดลอกทรัพยากรลงไป


11

ไม่มีการอ้างอิงที่สมบูรณ์สำหรับไฟล์ที่กล่าวถึงเนื่องจากสามารถขยายได้โดยปลั๊กอินต่างๆ

โดยทั่วไปไฟล์. project จะจัดเก็บการตั้งค่าโครงการเช่นตัวสร้างและการตั้งค่าลักษณะของโครงการในขณะที่ไฟล์. classpath จะกำหนดคลาสพา ธ ที่จะใช้ระหว่างการเรียกใช้ ไฟล์ classpath มี src และรายการเป้าหมายที่สอดคล้องกับโฟลเดอร์ในโครงการ รายการ con ใช้เพื่ออธิบายรายการ "เสมือน" บางชนิดเช่น JVM libs หรือในกรณีของการพึ่งพาปลั๊กอิน eclipse (การพึ่งพาโครงการ Java ปกติจะแสดงแตกต่างกันโดยใช้รายการ src พิเศษ)


3

เอกสารประกอบคราสนี้มีรายละเอียดเกี่ยวกับมาร์กอัปใน.projectไฟล์: ไฟล์คำอธิบายโครงการ

มันอธิบาย.projectไฟล์เป็น:

เมื่อโครงการถูกสร้างขึ้นในพื้นที่ทำงานไฟล์คำอธิบายโครงการจะถูกสร้างขึ้นโดยอัตโนมัติซึ่งอธิบายถึงโครงการ วัตถุประสงค์ของไฟล์นี้คือการทำให้โครงการอธิบายตนเองเพื่อให้โครงการที่ซิปหรือปล่อยไปยังเซิร์ฟเวอร์สามารถสร้างใหม่ได้อย่างถูกต้องในพื้นที่ทำงานอื่น ไฟล์นี้มักจะเรียกว่า ". project"

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