Использование Maven для проектов C / C ++

85

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

Bostone
источник
Я как раз собираюсь попробовать. Насколько я понимаю, он все еще поддерживается и тем временем перемещен сюда: github.com/sonatype/maven-nar-plugin
espakm

Ответы:

90

Я очень рекомендую maven-nar-plugin . Я считаю, что он во многих отношениях превосходит альтернативы. Он не требует перечисления исходных файлов, поддерживает несколько операционных систем и архитектур, выполняет модульные и интеграционные тесты и, как правило, следует «пути maven». Он вводит новый вид упаковки - NAR, или «собственный архив», который содержит артефакт, который вам нужен (.dll, .so, .a, .exe и т. Д.), А также метаданные, заголовки и т. Д. В файле это имеет смысл.

Для упаковки стороннего программного обеспечения в NAR требуется небольшая предварительная работа, но это довольно просто. Как только они являются 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: issues.sonatype.org/browse/NAR
tommy chheng
1
при использовании примеров nar-maven-plugin для его работы выполните следующие действия: mvn package - это сгенерирует тестовые пакеты, а затем можно запустить тест, который зависит от NarSystem
serup