Usando Maven para projetos C / C ++

85

Estou colocando a construção do Maven em torno de um cluster de código amador, mal escrito e, francamente, primitivo C / C ++ (ou seja, alguns C, alguns C ++). O problema é - há muito dele em circulação atualmente e não pode ser facilmente substituído. Construí-lo requer muito conhecimento tribal (você tem que ir de cubo em cubo apenas para descobrir como compilar / construir várias partes) e liberar é um pesadelo total. (Não - não vou reescrevê-lo, por favor não pergunte) Minha pergunta é - devo usar maven-native-pluginpara substituir vários makefiles curtos ou usar exec-maven-pluginsimplesmente para executá-los? Tive uma experiência muito boa até agora com o último fazendo .NET e não sei se devo investir no nativeplugin ou ficar com ele exec? Se você tiver experiência com "Mavenizing" C / C ++, eu adoraria receber alguns conselhos.

Bostone
fonte
Estou prestes a experimentar. A meu ver, ele ainda é mantido e, entretanto, mudou aqui: github.com/sonatype/maven-nar-plugin
espakm

Respostas:

90

Eu recomendo fortemente o plugin maven-nar . Acho que é superior em muitos aspectos às alternativas. Não requer a listagem de arquivos de origem, lida com vários sistemas operacionais e arquiteturas, lida com testes de unidade e integração e geralmente segue "o caminho do maven". Ele apresenta um novo tipo de pacote - o NAR, ou "arquivo nativo", que contém o artefato de seu interesse (.dll, .so, .a, .exe, etc.), mas também metadados, cabeçalhos, etc. em um maneira que faz sentido.

Requer um pouco de trabalho inicial para empacotar software de terceiros em NARs, mas é bastante simples. Uma vez que eles são NARs, você simplesmente usa o mecanismo de dependência normal do Maven para se vincular a eles, por exemplo:

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

Uma desvantagem é que ele não parece ser mantido ativamente, mas é cheio de recursos e é um exemplo bastante impressionante de criação de plug-in Maven.

Tiro único
fonte
Obrigado pela dica - com certeza vou dar uma olhada!
Bostone,
Vou aceitar isso como uma resposta - isso realmente parece ser superior ao maven-native-plugin
Bostone
Boa sorte. Uma coisa a observar - recebi uma notificação esta manhã (que coincidência) que um bug que enviei há um ano foi resolvido hoje - a manutenção parece ter sido reativada.
SingleShot
2
Parece que o plugin maven-nar está sendo mantido em atividade agora por sonatype: issues.sonatype.org/browse/NAR
tommy chheng
1
ao usar exemplos de nar-maven-plugin, faça o seguinte para que funcione: mvn package - isso irá gerar os pacotes de teste e então é possível executar o teste que depende do NarSystem
serup