Usando Maven para proyectos C / C ++

Estoy construyendo Maven en torno a un grupo de código C / C ++ francamente escrito y francamente amateur (es decir, algo de C, algo de C ++). El problema es que actualmente hay mucho en circulación y no se puede reemplazar fácilmente. Construirlo requiere mucho conocimiento tribal (tienes que ir de cubo en cubo solo para descubrir cómo comstackr / construir varias partes) y liberarlo es una pesadilla total. (No, no voy a reescribirlo, por favor no pregunte) Mi pregunta es: ¿debería usar maven-native-plugin para reemplazar multitud de makefiles cortos o usar exec-maven-plugin para simplemente ejecutarlos? Hasta ahora, he tenido una experiencia bastante buena con este último haciendo .NET y no sé si debería invertir en un plugin native o quedarme con el exec . Si tuvieras experiencia con “Mavenizing” C / C ++, me gustaría obtener algunos consejos.

Recomiendo mucho el maven-nar-plugin . Encuentro superior en muchas formas a las alternativas. No requiere que se enumeren los archivos de origen, se manejen varios sistemas operativos y architectures, se manejen las pruebas de unidad y de integración, y en general sigue “la ruta de maven”. Introduce un nuevo tipo de paquete: el NAR, o “archivo nativo”, que contiene el artefacto que le importa (.dll, .so, .a, .exe, etc.) pero también metadatos, encabezados, etc. en una camino que tiene sentido.

Requiere un poco de trabajo inicial para empaquetar software de terceros en NAR, pero es bastante sencillo. Una vez que son NAR, simplemente usa el mecanismo de dependencia normal de Maven para vincularlos, por ejemplo:

  cppunit cppunit test  

Una desventaja es que no parece mantenerse activamente, pero tiene todas las funciones y es un ejemplo bastante impresionante de la creación de plugins Maven.