2009-10-09 20 views
79

Pongo a Maven en un clúster de código C/C++ amateur, mal escrito y francamente primitivo (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 compilar/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? Tuve pretty good experience hasta ahora con este último haciendo .NET y no sé si debería invertir en el complemento native o quedarme con exec? Si tuvieras experiencia con "Mavenizing" C/C++, me gustaría obtener algunos consejos.Uso de Maven para proyectos de C/C++

+0

Estoy a punto de probarlo. Como veo, todavía se mantiene y se ha movido mientras tanto aquí: http://github.com/sonatype/maven-nar-plugin – espakm

Respuesta

83

Recomiendo encarecidamente 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 arquitecturas, 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 están NARs, sólo tiene que utilizar el mecanismo normal de dependencia Maven para enlazar con ellos, por ejemplo:

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

Un inconveniente es que no parece ser mantenido de forma activa, pero es con todas las funciones y es una un ejemplo bastante impresionante de la creación de plugins Maven.

+0

Gracias por el consejo - ¡Definitivamente lo comprobaré! – Bostone

+0

Voy a aceptar esto como respuesta, esto de hecho parece ser superior a maven-native-plugin – Bostone

+0

Buena suerte. Una cosa a tener en cuenta: esta mañana recibí una notificación (qué coincidencia) de que un error que envié hace un año se resolvió hoy: el mantenimiento parece haber reaccionado. – SingleShot

Cuestiones relacionadas