ใช้ Maven สำหรับโปรเจ็กต์ C / C ++


85

ฉันกำลังวาง Maven ไว้รอบ ๆ กลุ่มมือสมัครเล่นเขียนไม่ดีและตรงไปตรงมา - รหัส C / C ++ ดั้งเดิม (หมายถึง C บางตัว C ++ บางตัว) ปัญหาคือ - มีสินค้าหมุนเวียนอยู่มากมายและไม่สามารถเปลี่ยนใหม่ได้ง่ายๆ การสร้างมันต้องใช้ความรู้เกี่ยวกับชนเผ่าจำนวนมาก (คุณต้องเปลี่ยนจากคิวบ์ไปยังคิวบ์เพื่อค้นหาวิธีรวบรวม / สร้างชิ้นส่วนต่างๆ) และการปลดปล่อยนั้นเป็นฝันร้ายทั้งหมด (ไม่ - ฉันจะไม่เขียนมันใหม่โปรดอย่าถาม) คำถามของฉันคือ - ฉันควรใช้maven-native-pluginเพื่อแทนที่ makefiles สั้น ๆ จำนวนมากหรือใช้exec-maven-pluginเพื่อดำเนินการเหล่านี้? ฉันมีประสบการณ์ที่ดีมากกับการทำ. NET และไม่รู้ว่าฉันควรลงทุนกับnativeปลั๊กอินหรืออยู่กับexec? หากคุณเคยมีประสบการณ์กับ C / C ++ "Mavenizing" ฉันยินดีที่จะรับคำแนะนำ


ฉันกำลังจะลอง อย่างที่ฉันเห็นมันยังคงได้รับการบำรุงรักษาและได้ย้ายไปแล้วที่นี่: github.com/sonatype/maven-nar-plugin
espakm

คำตอบ:


90

ผมขอแนะนำให้Maven-NAR ปลั๊กอิน ฉันพบว่ามันเหนือกว่าทางเลือกในหลาย ๆ ด้าน ไม่จำเป็นต้องแสดงรายการไฟล์ต้นทางจัดการระบบปฏิบัติการและสถาปัตยกรรมหลายระบบจัดการการทดสอบหน่วยและการรวมระบบและโดยทั่วไปจะเป็นไปตาม "the maven way" แนะนำบรรจุภัณฑ์รูปแบบใหม่ - NAR หรือ "ไฟล์เก็บถาวรดั้งเดิม" ที่มีสิ่งประดิษฐ์ที่คุณสนใจ (.dll, .so, .a, .exe ฯลฯ ) แต่ยังรวมถึงข้อมูลเมตาส่วนหัว ฯลฯ ใน วิธีที่สมเหตุสมผล

ต้องใช้งานล่วงหน้าเล็กน้อยในการรวมซอฟต์แวร์ของบุคคลที่สามไว้ใน NARs แต่ค่อนข้างตรงไปตรงมา เมื่อเป็น NAR แล้วคุณเพียงแค่ใช้กลไกการพึ่งพา Maven ตามปกติเพื่อเชื่อมโยงกับพวกเขาตัวอย่างเช่น:

<dependency>
  <groupId>cppunit</groupId>
  <artifactId>cppunit</artifactId>
  <scope>test</scope>
</dependency>

ข้อเสียเปรียบประการหนึ่งคือดูเหมือนว่าจะไม่ได้รับการบำรุงรักษาอย่างแข็งขัน แต่มีคุณสมบัติครบถ้วนและเป็นตัวอย่างที่น่าประทับใจของการสร้างปลั๊กอิน Maven


ขอบคุณสำหรับเคล็ดลับ - ฉันจะลองดู!
Bostone

ฉันจะยอมรับสิ่งนี้เป็นคำตอบ - ดูเหมือนว่าจะดีกว่า maven-native-plugin
Bostone

โชคดี. สิ่งหนึ่งที่ควรทราบ - ฉันได้รับการแจ้งเตือนเมื่อเช้านี้ (บังเอิญแค่ไหน) ว่าข้อบกพร่องที่ฉันส่งเมื่อปีที่แล้วได้รับการแก้ไขในวันนี้ - ดูเหมือนว่าการบำรุงรักษาจะกลับมา
SingleShot

2
ดูเหมือนว่า maven-nar-plugin จะถูกดูแลโดย sonatype: issue.sonatype.org/browse/NAR
tommy chheng

1
เมื่อใช้ตัวอย่างของ nar-maven-plugin ให้ทำตามเพื่อให้มันทำงาน: แพ็คเกจ mvn - สิ่งนี้จะสร้างแพ็คเกจทดสอบจากนั้นจึงเป็นไปได้ที่จะเรียกใช้การทดสอบซึ่งขึ้นอยู่กับ NarSystem
serup
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.