java maven jni maven-nar-plugin native-maven-plugin

java - maven-nar-plugin vs native-maven-plugin, que es mejor?



jni (3)

Solo he usado maven-nar-plugin para aplicaciones C / C ++ independientes, pero funcionó muy bien para eso.

En cuanto a JNI, he estado utilizando el plugin native-maven desde hace unos años en una aplicación considerable. Lo usamos para permitir que nuestras aplicaciones Java interactúen con otras aplicaciones que solo ofrecen API de C. De hecho, lo encontré bastante fácil de usar. La documentación es bastante buena y explica el uso básico, pero aún debe lidiar con el compilador y el enlazador de C, y con las opciones necesarias para la compilación.

Simplemente le pasamos los comandos y opciones del compilador y el enlazador, la ubicación de la fuente y las ubicaciones de los archivos javah, y funciona. Tengo que decir que con todo el dolor que hemos pasado con JNI, el plugin maven es una de las pocas cosas que no ha sido una gran molestia.

Voy a crear un proyecto de Java que use JNI. Quiero implementar el proyecto como una aplicación independiente, pero algunos módulos también pueden usarse como bibliotecas de otras aplicaciones. Quiero apoyar diferentes plataformas y todo debe ser tan sencillo como sea posible.

Por lo que puedo ver, tengo la opción entre maven-nar-plugin, que no se actualizó por un año y medio ahora, y el plugin native-maven, que me parece menos amigable.

¿Tiene alguna experiencia con alguno de ellos o recomendaciones que debería usar?


La tercera diapositiva en esta presentación sobre el complemento NAR por Mark Donszelmann del Stanford Linear Accelerator Center compara el plugin nativo-maven y el plugin maven-nar. Citando de la diapositiva 3, los pros y los contras del plugin native-maven:

Pros

  • Muy configurable

Contras

  • No se ejecutó fuera de la caja (no hay valores predeterminados)
  • Sin dependencias binarias
  • No plataforma cruzada (diferentes perfiles para diferentes plataformas)

He usado mucho plugin nativo-maven desde hace un año para compilar código fuente C y C ++ (con un perfil para cada plataforma, como compilador, opciones de compilador, opciones de enlazador, etc.). Funciona como un encanto, pero me siento bastante solo en mi situación. Ahora, no entiendo por qué el desarrollador C / C ++ todavía usa las herramientas make o cmake de otra época. Maven es mucho mejor para administrar versiones y dependencias ...