Estoy poniendo la compilación de Maven en torno a un grupo de código C / C ++ amateur, mal escrito y francamente primitivo (es decir, algo de C, algo de C ++). El problema es que hay mucho en circulación actualmente y no se puede reemplazar fácilmente. Construirlo requiere mucho conocimiento tribal (tienes que ir de cubo en cubo solo para descubrir cómo compilar / construir varias partes) y liberarlo es una pesadilla total. (No, no voy a reescribirlo, por favor no pregunte) Mi pregunta es: ¿debo usar maven-native-plugin
para reemplazar multitud de archivos MAKE cortos o usarlos exec-maven-plugin
simplemente para ejecutarlos? Tuve una experiencia bastante buena hasta ahora con este último haciendo .NET y no sé si debería invertir en un native
complemento o quedarme exec
. Si tiene experiencia con "Mavenizing" C / C ++, me encantaría recibir algunos consejos.
fuente
Respuestas:
Recomiendo ampliamente el complemento maven-nar-plugin . Lo encuentro superior en muchos aspectos a las alternativas. No requiere enumerar los archivos de origen, maneja múltiples sistemas operativos y arquitecturas, maneja pruebas unitarias y de integración, y generalmente sigue "el camino de los expertos". Introduce un nuevo tipo de empaque: el NAR, o "archivo nativo", que contiene el artefacto que le interesa (.dll, .so, .a, .exe, etc.) pero también metadatos, encabezados, etc. en un manera que tenga sentido.
Requiere un poco de trabajo inicial empaquetar el software de terceros en los NAR, pero es bastante sencillo. Una vez que son NAR, simplemente usa el mecanismo de dependencia normal de Maven para vincularlos, por ejemplo:
<dependency> <groupId>cppunit</groupId> <artifactId>cppunit</artifactId> <scope>test</scope> </dependency>
Un inconveniente es que no parece que se mantenga de forma activa, pero tiene todas las funciones y es un ejemplo bastante impresionante de la creación de complementos de Maven.
fuente