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-plugin
pour remplacer une multitude de fichiers makefiles courts ou utiliser exec-maven-plugin
pour 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 native
plugin ou rester avec exec
? Si vous avez de l'expérience avec "Mavenizing" C / C ++, j'aimerais avoir quelques conseils.
la source
Réponses:
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.
la source