Author Topic: Crear Plugin Maven Custom  (Read 64 times)

Nomax

  • Newbie
  • *
  • Posts: 3
  • Karma: 0
    • View Profile
Crear Plugin Maven Custom
« on: Octubre 30, 2017, 05:53:40 pm »
Muy buenas tardes,

Tengo un proyecto maven multimodular, que en principio solo contiene en una de las capas una clase java con un main que ejecuta una serie de métodos. Me gustaría poder desarrollar un plugin maven para integrarlo en este proyecto y qué cumpla como única función, ejecutar ese main sin necesidad de hacerlo manualmente. Más adelante hará otra serie de cosas.

Comento hasta ahora lo que he logrado:

 - He creado un archetype-maven-mojo.
 - He configurado el pom.xml en el otro proyecto maven para que reconozca el plugin.

Lo que no sé es como enlazar esa clase .java en el proyecto Maven con el plugin para que al ejecutar el proyecto maven automáticamente ejecute esa clase java.


Muchas gracias y un saludo!

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5421
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Crear Plugin Maven Custom
« Reply #1 on: Octubre 30, 2017, 06:41:56 pm »
Hola:

El plugin tendrá una clase java que es el plugin en sí y que hace lo que tenga que hacer el plugin. Ahí debes buscar la clase con el main y ejecutarla. Lo suyo es que en la configuración del plugin se diga el nombre de la clase con el main.

En esta documentación https://maven.apache.org/guides/plugin/guide-java-plugin-development.html  , el método execute() del mojo es el que debe llamar al main, y en el documento, sección "Configuring Parameters in a Project" puedes ver como pasar parámetros a tu mojo (por ejemplo, el nombre de la clase con el main).

Saludos.

Nomax

  • Newbie
  • *
  • Posts: 3
  • Karma: 0
    • View Profile
Re: Crear Plugin Maven Custom
« Reply #2 on: Octubre 31, 2017, 02:11:47 pm »
Muchas gracias chuidiang! Hoy intentaré tenerlo listo.

Nomax

  • Newbie
  • *
  • Posts: 3
  • Karma: 0
    • View Profile
Re: Crear Plugin Maven Custom
« Reply #3 on: Noviembre 01, 2017, 02:13:36 am »
Disculpa Chuidiang. Podrías ponerme un ejemplo de <plugin> para poder ejecutar un método que se encuentre en una clase java (un main por ejemplo) del maven project desde el mojo? Es que no termino de entender cómo hacerlo.

Muchas gracias de antemano.

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5421
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Crear Plugin Maven Custom
« Reply #4 on: Noviembre 02, 2017, 08:30:23 pm »
Hola:

No estoy seguro si es tan sencillo, pero quizás basta con poner en el codigo del plugin

TuClaseConMain.main(....);

siempre que ejecutes el plugin después de que esté todo compilado. Mi duda es si desde el plugin se ven las clases del src.

Si eso funciona, para que tu plugin no sea solo para tu proyecto con tu clase, el nombre de TuClaseConMain debería ser configurable en la configuración de tu plugin en el fichero pom.xml. Y seguramente tengas que llamar al main con un invokeMethod() de introspección de java https://stackoverflow.com/questions/160970/how-do-i-invoke-a-java-method-when-given-the-method-name-as-a-string

Pero lo dicho, haz primero la prueba a llamarlo directamente a ver si funciona.

Saludos.

chuidiang

  • Administrator
  • Hero Member
  • *****
  • Posts: 5421
  • Karma: 12
    • View Profile
    • Apuntes de programación
Re: Crear Plugin Maven Custom
« Reply #5 on: Noviembre 02, 2017, 08:31:16 pm »
Hola:

Creo que deberíamos haber mirado antes. Esto http://www.mojohaus.org/exec-maven-plugin/usage.html   ¿es el plugin que tú quieres?

Por aquí un ejemplo https://stackoverflow.com/questions/9846046/run-main-class-of-maven-project

Como mucho, sólo tienes que ver en el pom.xml como ponerlo para que se ejecute siempre después del compilado si es eso lo que quieres.

Saludos.
« Last Edit: Noviembre 02, 2017, 08:34:39 pm by chuidiang »

 

ey