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

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

Ответ 1

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

Это требует немного предварительной работы для упаковки стороннего программного обеспечения в NAR, но это довольно просто. Как только они являются NAR, вы просто используете нормальный механизм зависимости Maven для связи с ними, например:

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

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