.classpath และ. project - ตรวจสอบการควบคุมเวอร์ชันหรือไม่?


89

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

นักพัฒนาของเราบางคนไม่ได้ใช้ eclipse อย่างไรก็ตามเรากำลังพิจารณาที่จะตรวจสอบไฟล์. classpath และ. project เพื่อช่วยผู้มาใหม่ในการเริ่มต้นใช้งาน นี่เป็นความคิดที่ดีหรือไม่? หรือนั่นจะนำไปสู่ความขัดแย้งอย่างต่อเนื่องในไฟล์เหล่านั้น? มีวิธีอื่นในการทำให้โครงการติดตั้งบนคราสได้ง่ายหรือไม่?


คำตอบ:


66

ใช่อย่างที่ฉันพูดใน " คุณเก็บไฟล์โครงการของคุณภายใต้การควบคุมเวอร์ชันหรือไม่ "

"โหลดมันตั้งค่าไปเลย"

แต่ ... นี่เป็นจริงสำหรับการตั้งค่า Eclipse3.5 ล่าสุดเท่านั้นโดยที่ build paths รองรับพา ธ สัมพัทธ์ :

สร้างเส้นทางรองรับเส้นทางสัมพัทธ์


และ Eclipse3.6 จะดีกว่าเนื่องจากรองรับพา ธ สัมพัทธ์สำหรับตัวแปรพา ธในLinked Resources:

ตัวแปรเส้นทางที่มีเส้นทางสัมพัทธ์
(ตั้งแต่ 3.6M5)


2
ว้าวฉันไม่รู้ว่าพวกเขาเพิ่มสิ่งนี้ ... จะช่วยเราได้บ้าง
Uri

ดูเหมือนว่ารูปภาพที่เกี่ยวข้องกับคำตอบนี้จะเป็นแบบออฟไลน์
vkraemer

1
@vkraemer: จริง. ตอนนี้ฉันได้กู้คืนสองภาพแล้วภาพแรกมาจากarchive.eclipse.org/eclipse/downloads/drops/R-3.5-200906111540/…และภาพที่สองจากdownload.itemis.com/mirror/eclipse/R-3.6 -201006080911./… .
VonC

17

ไม่แน่นอน - โดยทั่วไปเป็นความคิดที่แย่มากที่จะแจกจ่ายไฟล์โครงการผ่านการโค่นล้ม โดยเฉพาะอย่างยิ่งเมื่อใครบางคนอาจปรับเปลี่ยนมันในลักษณะแปลก หน้าที่ดีในเอกสารของโครงการเป็นความคิดที่ดีกว่ามาก โครงการของเรายังมีโมดูลมากมายและการตั้งค่าที่ซับซ้อน เราได้ตั้งค่าหน้าบรรจบที่อธิบายวิธีเริ่มต้นกับโปรเจ็กต์บนป๊อปปูเลอร์ IDE แต่ละรายการ - IntelliJ, Eclipse, NetBeans ไฟล์ README ในการโค่นล้มมีข้อมูลเดียวกัน


32
ฉันไม่สามารถตกลงกันได้ จากประสบการณ์ของฉันเป็นการดีที่จะตรวจสอบไฟล์เหล่านี้เพื่อให้การชำระเงินง่ายที่สุด อาจมีคนเปลี่ยนพวกเขาในลักษณะแปลก ๆ ? อาจมีคนเปลี่ยนรหัสของคุณในลักษณะแปลก ๆ ...
Arne Deutsch

Arne คุณควรให้คำตอบไม่ใช่แสดงความคิดเห็น
amarillion

5
ไฟล์โปรเจ็กต์สำหรับ IDE ไม่ได้เป็นส่วนหนึ่งของโปรเจ็กต์ใด ๆ หากคุณต้องการแจกจ่ายให้ไปที่แฮ็ด - แนบไฟล์เหล่านี้ไปกับบทความที่ฉันพูดถึง โดยทั่วไปทุกคนในทีมสามารถแก้ไขไฟล์ใน repo ได้ แต่ไม่ใช่ทุกคนที่สามารถแนบไฟล์ใหม่ไปยังโหนดเอกสารที่สำคัญได้เป็นต้นเป็นเรื่องง่ายมากที่ใครบางคนจะลืมเพิกเฉยต่อ classpath และไฟล์โครงการและยอมรับเมื่อไม่ควรทำ แม้ว่าคุณจะทำให้พวกเขาถูกโค่นล้ม - คุณควรเก็บพวกมันไว้ที่ไหนสักแห่งที่ด้านข้าง ...
Bozhidar Batsov

8
-1 ไม่เห็นด้วยมากขึ้น การตั้งค่าโครงการเป็นส่วนสำคัญของการทำงานในแต่ละวันกับโครงการ ข้อเสียของการตรวจสอบโดยไม่ได้ตั้งใจในการตั้งค่าที่ไม่ถูกต้องมีน้อยกว่าข้อดีของการทำให้ทุกคนได้รับข้อมูลล่าสุดโดยอัตโนมัติ ท้ายที่สุดคุณสามารถย้อนกลับไปยังเวอร์ชันก่อนหน้าได้อย่างง่ายดาย
Michael Borgwardt

7
ทุกคนมีสิทธิ์แสดงความคิดเห็น ตามความเป็นจริงฉันจะไม่สร้างโปรเจ็กต์โดยอาศัยระบบโปรเจ็กต์ของ Eclipse (หรือ IDE อื่น ๆ ) ตั้งแต่แรก ... Maven เป็นเครื่องมือที่ดีที่สุดในการทำความเข้าใจโปรเจ็กต์และทำให้การตั้งค่าเฉพาะ IDE ล้าสมัย อีกครั้งในการสังเกตว่ามีบางอย่างผิดปกติกับการตั้งค่าปัจจุบันและกลับไปที่การแก้ไขก่อนหน้านั้นไม่น่าจะแตกต่างจากเวลาในการปรับการตั้งค่าใหม่ด้วยตัวคุณเอง อย่างน้อยใน บริษัท ของฉันทุกคนในทีมจะได้รับการแจ้งเตือนทางอีเมลหากจำเป็นต้องมีการแทรกแซงของผู้ใช้หลังจากการเปลี่ยนแปลงที่ใหญ่ขึ้น
Bozhidar Batsov

10

ฉันไม่ลงคะแนน แต่นั่นเป็นเพราะฉันมักจะสร้างไฟล์เหล่านี้จาก maven


m2e ทำมากที่สุด แต่ไม่ใช่ทุกอย่างสำหรับคุณ
Junchen Liu

6

จากประสบการณ์ของฉันไม่รวมบางกรณีที่เกี่ยวข้องกับการตั้งค่าภายในเครื่องทุกอย่างควรอยู่ในการควบคุมแหล่งที่มา กฎของการควบคุมแหล่งที่มาคือทุกสิ่งที่ผลักดันควรถูกคาดหวังให้ทำงานโดยผู้ที่ดึงออก น่าเสียดายที่คราสมักทำให้สิ่งนี้อยู่ใน.classpath:

    <classpathentry kind="con" 
      path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/Java SE 7"/>

ดังนั้นบน Mac ของฉันสิ่งนี้ใช้งานได้และอาจมีบางคนบน Mac มี JRE เหมือนกัน แต่จะใช้ไม่ได้กับคนอื่น

นอกจากนี้ยังไม่มีวิธีง่ายๆในการนี้ Eclipse จะเพิ่มสิ่งนั้นเข้ามาเสมอฉันต้องการมีไฟล์. classpath อยู่ในนั้นเนื่องจากมี JAR ของบุคคลที่สามอยู่ในโฟลเดอร์ lib ของเราซึ่งเราสนใจเกี่ยวกับการกำหนดเวอร์ชันดังนั้นเราจึงปล่อยไว้ในนั้นเพื่อให้นักพัฒนาใหม่ไม่ต้องรับ . เรากำลังจะย้ายไปใช้ระบบที่ถูกจัดการ แต่ยังมีการตรวจสอบการอ้างอิงที่จัดการ + ที่ไม่มีการจัดการซึ่งหมายความว่านักพัฒนาทั้งหมดต้องแน่ใจว่ามีสองไดเรกทอรีอยู่ใน.classpathไฟล์ แต่จะดีกว่าการแก้ไข JRE ของคุณทุกครั้งที่คุณดึงและมีการเปลี่ยนแปลง. classpath ของคุณทุกครั้งที่คุณกระทำ

Eclipse ทำสิ่งที่ดีอื่น ๆ ให้กับคุณ ไฟล์. project มักจะเหมือนกันในทุกอินสแตนซ์ดังนั้นให้รวมไว้ด้วย แต่สิ่งที่ดีที่สุดเกี่ยวกับการควบคุมแหล่งที่มาสำหรับ eclipse คือการตั้งค่าเรียกใช้การกำหนดค่า ภายใต้แท็บ "ทั่วไป" ในกล่องโต้ตอบเรียกใช้การกำหนดค่าให้บันทึกการกำหนดค่าเพื่อให้ปรากฏสำหรับเพื่อนร่วมงานของคุณภายใต้รายการโปรดสำหรับการแก้ปัญหาและเรียกใช้ สำหรับฉัน.launchไฟล์จำนวนมากอยู่ในไฟล์.settingsไดเร็กทอรีดังนั้นเราทุกคนจึงสามารถใช้งานได้

ดังนั้นฉันจึงพูดว่า: .settingsไดเรกทอรีเข้าสู่การควบคุมแหล่งที่มาสำหรับการกำหนดค่าการเปิดตัว (ยกเว้น * .prefs)

.classpath อยู่ข้างนอก

.project เข้าไป


เป็นกรณีนี้แม้ว่าจะใช้สภาพแวดล้อมการดำเนินการสำหรับ JRE / JVM หรือไม่
Mr_and_Mrs_D

5

ฉันจะตรวจสอบไฟล์เหล่านี้เพื่อให้การเริ่มต้นสำหรับผู้ใช้ใหม่ง่ายที่สุด ที่ดีที่สุดผู้ใช้ควรตรวจสอบโครงการและควรจะสามารถเรียกใช้โดยไม่มีความรู้เพิ่มเติม สำหรับไฟล์นี้กฎจะเหมือนกับไฟล์อื่น ๆ ในโครงการ: จัดการด้วยความระมัดระวัง คุณไม่ควรวาง pathes สัมบูรณ์ในซอร์สโค้ดซึ่งเป็นสิ่งที่คุณควรทำในไฟล์คอนฟิก

หากไฟล์ถูกตรวจสอบในลักษณะที่โปรเจ็กต์ทำงานตั้งแต่เริ่มต้นก็ไม่ควรมีแรงในการเปลี่ยนแปลงมากนัก


5

ฉันขอแนะนำให้คุณตรวจสอบไฟล์ในการโค่นล้มหากไฟล์เหล่านั้นไม่มีพา ธ สัมบูรณ์และข้อมูลอื่น ๆ ซึ่งจะเชื่อมโยงโดยตรงกับสภาพแวดล้อมของผู้พัฒนารายเดียว

หากไฟล์มีพา ธ สัมบูรณ์และสิ่งที่คล้ายกัน README จะเป็นทางเลือกที่ดีกว่า


2

ใช่ตรวจสอบอย่างแน่นอน แต่ตรวจสอบให้แน่ใจว่าคุณได้บันทึกการอ้างอิงเส้นทางใด ๆ และหลีกเลี่ยงเส้นทางที่แน่นอนถ้าเป็นไปได้

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

การตั้งค่าที่ซับซ้อนบางอย่างอาจจัดการได้ดีกว่าโดยสคริปต์ในการสร้างไฟล์เหล่านี้ แต่โดยปกติแล้วการตรวจสอบไฟล์เหล่านี้จะดีกว่า

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