Sử dụng Maven cho các dự án C / C ++


85

Tôi đang đặt Maven xây dựng xung quanh cụm mã nghiệp dư, viết kém và thẳng thắn - nguyên thủy C / C ++ (có nghĩa là một số C, một số C ++). Vấn đề là - hiện có rất nhiều thứ đang được lưu hành và không thể dễ dàng thay thế được. Việc xây dựng nó đòi hỏi rất nhiều kiến ​​thức bộ tộc (bạn phải đi từ khối này sang khối khác chỉ để tìm cách biên dịch / xây dựng các bộ phận khác nhau) và việc giải phóng hoàn toàn là cơn ác mộng. (Không - tôi sẽ không viết lại nó, xin đừng hỏi) Câu hỏi của tôi là - tôi nên sử dụng maven-native-pluginđể thay thế vô số các tệp trang điểm ngắn hay sử dụng exec-maven-pluginđể thực thi chúng đơn giản? Tôi đã có kinh nghiệm khá tốt cho đến nay với việc làm .NET sau này và không biết liệu tôi nên đầu tư vào nativeplugin hay ở lại với exec? Nếu bạn đã có kinh nghiệm với "Mavenizing" C / C ++, tôi rất muốn nhận được một số lời khuyên.


Tôi chỉ muốn thử nó. Như tôi thấy, nó vẫn được duy trì và nó đã di chuyển trong khi đó ở đây: github.com/sonatype/maven-nar-plugin
espakm

Câu trả lời:


90

Tôi thực sự khuyên bạn nên sử dụng plugin maven-nar- . Tôi thấy nó vượt trội về nhiều mặt so với các lựa chọn thay thế. Nó không yêu cầu liệt kê các tệp nguồn, xử lý nhiều hệ điều hành và kiến ​​trúc, xử lý các bài kiểm tra đơn vị và tích hợp và thường tuân theo "cách maven". Nó giới thiệu một loại bao bì mới - NAR, hoặc "kho lưu trữ gốc", chứa phần mềm mà bạn quan tâm (.dll, .so, .a, .exe, v.v.) nhưng cũng có siêu dữ liệu, tiêu đề, v.v. trong một cách đó có ý nghĩa.

Nó yêu cầu một chút công việc trước để đóng gói phần mềm của bên thứ ba thành NAR, nhưng nó khá đơn giản. Khi chúng là NAR, bạn chỉ cần sử dụng cơ chế phụ thuộc Maven bình thường để liên kết với chúng, ví dụ:

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

Một nhược điểm là nó có vẻ không được bảo trì tích cực, nhưng nó có đầy đủ tính năng và là một ví dụ khá ấn tượng về tác giả của plugin Maven.


Cảm ơn vì mẹo - tôi chắc chắn sẽ kiểm tra nó!
Bostone

Tôi sẽ chấp nhận điều này là câu trả lời - điều này thực sự có vẻ là vượt trội so với maven-địa-Plugin
Bostone

Chúc may mắn. Một điều cần lưu ý - tôi nhận được thông báo sáng nay (thật trùng hợp) rằng một lỗi tôi gửi một năm trước đã được giải quyết vào hôm nay - bảo trì dường như đã được kích hoạt lại.
SingleShot

2
Có vẻ như maven-nar-plugin hiện đang được duy trì hoạt động bởi sonatype: Problem.sonatype.org/browse/NAR
tommy chheng

1
khi sử dụng ví dụ về nar-maven-plugin, sau đó làm sau cho nó để làm việc: gói mvn - điều này sẽ tạo ra các gói thử nghiệm và sau đó nó có thể chạy thử nghiệm mà phụ thuộc vào NarSystem
serup
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.