Utilisation de Maven pour les projets C / C ++

85

Je mets Maven construire autour d'un cluster de code amateur, mal écrit et franchement - primitif C / C ++ (c'est-à-dire du C, du C ++). Le problème est - il y en a beaucoup en circulation actuellement et ne peuvent pas être facilement remplacés. Le construire nécessite beaucoup de connaissances tribales (il faut passer de cube en cube juste pour savoir comment compiler / construire diverses parties) et la sortie est un cauchemar total. (Non - je ne vais pas le réécrire, plz ne demandez pas) Ma question est - devrais-je utiliser maven-native-pluginpour remplacer une multitude de fichiers makefiles courts ou utiliser exec-maven-pluginpour simplement les exécuter? J'ai eu une assez bonne expérience jusqu'à présent avec ce dernier faisant .NET et je ne sais pas si je devrais investir dans un nativeplugin ou rester avec exec? Si vous avez de l'expérience avec "Mavenizing" C / C ++, j'aimerais avoir quelques conseils.

Bostone
la source
Je suis sur le point de l'essayer. Comme je le vois, il est toujours maintenu et il a déménagé entre-temps ici: github.com/sonatype/maven-nar-plugin
espakm

Réponses:

90

Je recommande vivement le plugin maven-nar-plugin . Je le trouve supérieur à bien des égards aux alternatives. Il ne nécessite pas de lister les fichiers sources, gère plusieurs OS et architectures, gère les tests unitaires et d'intégration, et suit généralement "la manière maven". Il introduit un nouveau type de packaging - le NAR, ou "archive native", qui contient l'artefact qui vous tient à cœur (.dll, .so, .a, .exe, etc.) mais aussi des métadonnées, des en-têtes, etc. dans un façon qui a du sens.

Il faut un peu de travail initial pour intégrer des logiciels tiers dans des NAR, mais c'est assez simple. Une fois qu'il s'agit de NAR, vous utilisez simplement le mécanisme de dépendance normal de Maven pour établir un lien avec eux, par exemple:

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

Un inconvénient est qu'il ne semble pas être activement maintenu, mais il est complet et est un exemple assez impressionnant de création de plugins Maven.

Coup unique
la source
Merci pour le conseil - je vais certainement le vérifier!
Bostone
Je vais accepter cela comme réponse - cela semble en effet être supérieur à maven-native-plugin
Bostone
Bonne chance. Une chose à noter - j'ai reçu une notification ce matin (quelle coïncidence) qu'un bug que j'ai soumis il y a un an a été résolu aujourd'hui - la maintenance semble avoir réactivé.
SingleShot
2
On dirait que maven-nar-plugin est actuellement maintenu par sonatype: issues.sonatype.org/browse/NAR
tommy chheng
1
lorsque vous utilisez des exemples de nar-maven-plugin, procédez comme suit pour que cela fonctionne: package mvn - cela générera les packages de test, puis il est possible d'exécuter des tests qui dépendent de NarSystem
serup