Використання Maven для проектів C / C ++


85

Я ставлю Maven build навколо кластера аматорських, погано написаних та відверто - примітивних кодів C / C ++ (маючи на увазі деякі C, деякі C ++). Проблема полягає в тому, що в даний час її багато в обігу і не може бути легко замінена. Для його побудови потрібно багато племінних знань (вам потрібно переходити від куба до куба, щоб просто дізнатися, як складати / будувати різні частини), а випуск - це цілий кошмар. (Ні - я не збираюся його переписувати, plz не запитуйте) Моє запитання - чи слід використовувати, maven-native-pluginщоб замінити безліч коротких файлів make-файлів або exec-maven-pluginпросто виконати їх? Наразі я мав досить хороший досвід роботи з останнім .NET і не знаю, чи варто інвестувати в nativeплагін чи залишатися з ним exec? Якби у вас був досвід роботи з "Mavenizing" C / C ++, я хотів би отримати якусь пораду.


Я ось-ось спробую. Як я бачу, він все ще підтримується і тим часом переїхав сюди: github.com/sonatype/maven-nar-plugin
espakm

Відповіді:


90

Я настійно рекомендую плагін maven-nar- . Я вважаю, що він багато в чому перевершує альтернативи. Він не вимагає перерахування вихідних файлів, обробки декількох ОС та архітектур, обробки модульних та інтеграційних тестів, і, як правило, йде "шляхом maven". Він вводить новий вид упаковки - NAR, або "власний архів", який містить артефакт, який вас цікавить (.dll, .so, .a, .exe тощо), але також метадані, заголовки тощо спосіб, який має сенс.

Це вимагає певної попередньої роботи, щоб упакувати програмне забезпечення сторонніх розробників у NAR, але це досить просто. Коли вони є NAR, ви просто використовуєте звичайний механізм залежностей Maven для зв’язку з ними, наприклад:

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

Одним недоліком є ​​те, що він, здається, не підтримується активно, але він повнофункціональний і є досить вражаючим прикладом створення плагіна Maven.


Дякую за підказку - я обов’язково перевірю!
Бостон

Я прийму це як відповідь - це справді перевершує maven-native-plugin
Bostone

Удачі. Зазначимо одне - сьогодні вранці я отримав повідомлення (наскільки випадково), що помилка, яку я подав рік тому, була вирішена сьогодні - здається, технічне обслуговування реагувало.
SingleShot

2
Схоже, плагін maven-nar зараз веде діяльність, яку підтримує sonatype: issues.sonatype.org/browse/NAR
tommy chheng

1
використовуючи приклади nar-maven-plugin, виконайте такі дії, щоб він працював: mvn package - це створить тестові пакети, і тоді можна запустити тест, який залежить від NarSystem
serup
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.