Utilizzo di Maven per progetti C / C ++


85

Sto inserendo la build di Maven attorno a cluster di codice C / C ++ amatoriale, scritto male e francamente primitivo (che significa alcuni C, alcuni C ++). Il problema è che attualmente ce ne sono molti in circolazione e non possono essere facilmente sostituiti. Costruirlo richiede molta conoscenza tribale (devi passare da cubo a cubo solo per scoprire come compilare / costruire varie parti) e il rilascio è un incubo totale. (No - non ho intenzione di riscriverlo, per favore non chiedere) La mia domanda è: dovrei usare maven-native-pluginper sostituire una moltitudine di makefile brevi o usarli exec-maven-pluginper eseguirli semplicemente? Finora ho avuto una buona esperienza con quest'ultimo facendo .NET e non so se dovrei investire in nativeplugin o restare con exec? Se avessi esperienza con "Mavenizing" C / C ++ mi piacerebbe ricevere qualche consiglio.


Sto per provarlo. Come vedo, è ancora mantenuto e nel frattempo si è spostato qui: github.com/sonatype/maven-nar-plugin
espakm

Risposte:


90

Consiglio vivamente il plugin maven-nar . Lo trovo superiore in molti modi alle alternative. Non richiede l'elencazione dei file sorgente, gestisce più sistemi operativi e architetture, gestisce i test di unità e di integrazione e generalmente segue "il modo esperto". Introduce un nuovo tipo di pacchettizzazione: il NAR, o "archivio nativo", che contiene gli artefatti che ti interessano (.dll, .so, .a, .exe, ecc.) Ma anche metadati, intestazioni, ecc. In un modo che abbia senso.

Richiede un po 'di lavoro in anticipo per impacchettare software di terze parti nei NAR, ma è piuttosto semplice. Una volta che sono NAR, è sufficiente utilizzare il normale meccanismo di dipendenza Maven per collegarsi a loro, ad esempio:

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

Uno svantaggio è che non sembra essere mantenuto attivamente, ma è completo ed è un esempio piuttosto impressionante di creazione di plug-in Maven.


Grazie per il suggerimento: lo controllerò sicuramente!
Bostone

Lo accetterò come risposta - questo sembra davvero essere superiore a maven-native-plugin
Bostone

In bocca al lupo. Una cosa da notare: stamattina ho ricevuto una notifica (che è una coincidenza) che un bug che ho inviato un anno fa è stato risolto oggi - la manutenzione sembra aver reagito.
SingleShot

2
Sembra che il plugin maven-nar sia attualmente gestito da sonatype: issues.sonatype.org/browse/NAR
tommy chheng,

1
quando si usano esempi di nar-maven-plugin, quindi fare quanto segue affinché funzioni: pacchetto mvn - questo genererà i pacchetti di prova e quindi è possibile eseguire test che dipendono da NarSystem
serup
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.