java - plugin - ¿Reemplazo Maven?
jenkins pipeline example (7)
¿Qué sugieres como reemplazo del conjunto de herramientas de compilación Maven Java? ¿Simplemente scripts Ant? SCons?
He estado usando buildr para algunos de mis proyectos. Scripts de compilación muy sencillos y legibles (sin xml) y utiliza repositorio maven (con esfuerzo trivial, maven 1 y maven 2).
Estaba buscando algo post-maven1 para trabajar en algunos proyectos y m2 no era tan atractivo. Maven ya había dejado a todos los usuarios de m1 en alto y seco con la necesidad de rehacer todos sus sistemas de construcción (y algunos de los míos no pueden expresarse en m2, por lo que puedo ver).
Soy aficionado a usar Ant con Ivy . Ivy usa los repositorios de Maven para buscar dependencias de la biblioteca sin forzarle a cambiar todo el sistema de compilación para adaptarlo a Maven.
Si bien me gusta la idea de Maven, siempre me encuentro luchando por cualquier cosa menos las configuraciones más simples. Su arquitectura está basada en un complemento, y la calidad de los complementos varía ampliamente. La documentación es incompleta en el mejor de los casos; la mitad del tiempo no puedo entender si el documento que estoy leyendo es para Maven 1 o 2. ¿Y con qué frecuencia ha tenido que recurrir al uso de maven-ant-plugin
para hacer algo básico?
He estado utilizando Apache Ivy durante aproximadamente un año, y estoy muy contento con eso. Sin embargo, hay un poco de una curva de aprendizaje. Pero hay una lista de correo activa, y el autor es muy receptivo.
Lo que terminé haciendo fue escribir una "biblioteca" de unos pocos objetivos Ant simples como "resolver", "compilar", "instalar", etc. que esperan que las cosas estén en los lugares estándar de Maven (como src/main/java
) y luego <import>
los objetivos en mis diversos proyectos. De esta forma, obtienes lo mejor de ambos mundos: configuración estilo Maven y todo el poder de Ant.
Hay al menos tres partes diferentes de Maven: el repositorio, la implementación del ciclo de vida independiente y las convenciones para un proyecto predeterminado. Usar Ivy proporciona solo el repositorio.
No lo he usado pero creo que easyant está diseñado para ser un reemplazo más completo para Maven. Utiliza Ivy como repositorio pero luego agrega convenciones y módulos estándar.
Realmente me gusta usar ant4eclipse: configuras las dependencias de tu proyecto en eclipse de forma normal y puedes escribir un único script ant que construirá todos los proyectos en el orden correcto.
Para libs de terceros, puede configurar un único proyecto de eclipse que contenga (y exporte) todos sus archivos jar [NO RECOMIENDO ESTO], o un proyecto separado para cada lib de terceros, exportando el archivo jar. [Recomiendo esta última b / c puede rastrear project-> deps terceros y actualizar partes cuando sea necesario.]
Depende de lo que uses de todos modos. Maven 1? Maven 2? Encuentro Maven 2 decentemente documentado, y bastante poderoso, cuando se usa en combinación con tareas Ant y algunos complementos de Java caseros.
Hay tareas Ant para usar las características Maven de Ant: http://maven.apache.org/ant-tasks/index.html . Entonces realmente no necesitas escribir tu propia "biblioteca".
Y puede llamar a Ant desde Maven: http://maven.apache.org/plugins/maven-antrun-plugin/ .
También puede escribir cosas usando Groovy, por ejemplo: http://groovy.codehaus.org/GMaven+-+Executing+Groovy+Code .
O simplemente escriba el código Java para los bits personalizados que necesita: http://maven.apache.org/guides/plugin/guide-java-plugin-development.html .
No hay razón para no mezclar y combinar, cuando puedes hacerlo;)
Me gustaría ir con buildr, si estoy esperando objetivos de compilación complejos en mi compilación. El beneficio es que no dependes de ninguna biblioteca en particular. Tienes todas las API de Ruby para hacer lo que quieras; a diferencia de Ivy, en cuyo caso todavía estás atada a ANT. El esfuerzo de migración a Ivy vale si desea introducir la dependencia de la biblioteca en un mecanismo de creación basado en ANT ya establecido que hace todas las operaciones que desea hacer.