openxava / documentación / Modificar código de XavaPro

×Novedad: OpenXava con IA - Refinar la UI (Parte 2) - 1 de diciembre · Leer más
Las ediciones Enterprise y Corporate de XavaPro incluyen el código fuente completo, por lo que puedes modificar el código de XavaPro para adaptarlo a tus necesidades, corregir un error, añadir una nueva función, etc..
El código fuente de XavaPro está incluido en la distribución de XavaPro, dentro de una carpeta llamada source-code:

Puedes modificarlo, compilarlo e instalarlo usando Maven y tu IDE favorito. Si no estás acostumbrado a Maven, aquí te presentamos una guía detallada para modificar el código de XavaPro para tu aplicación usando OpenXava Studio.

Instalar un JDK 8

XavaPro está compilado con Java 8 para poder trabajar con Java 8, 11, 17 y 21. Tienes que instalar Java 8 en tu ordenador y configurar OpenXava Studio para reconocerlo. 
Primero, descarga un JDK 8 e instálalo en tu ordenador. Luego en OpenXava Studio abre Windows > Preferences > Java > Installed JREs. Una vez allí, añade el JDK 8 a la lista de JREs. De este modo:
Fíjate como no es necesario elegirlo como predeterminado.

Importar xavapro en el workspace

Para importar el proyecto xavapro pulsa en File > Import...:

Ahora selecciona Maven > Existing Maven Projects y pulsa en Next:


En Root Directory pulsa en Browse... para escoger la carpeta donde está el código de XavaPro, es decir xavapro-7.x.x/source-code:


Asegurate de que el proyecto xavapro está marcado y pulsa en Finish.

Al final, el proyecto xavapro con todo su código estará en tu workspace:

Ahora puedes modificar el código de xavapro a tu gusto.

Modificar el código de XavaPro

Primero, cambia la versión en xavapro/pom.xml para que sea un SNAPSHOT. Abre el pom.xml dentro del proyecto xavapro y añade el sufijo -SNAPSHOT al número de versión:

Significa que es una versión de trabajo, no con funciones congeladas sino lista para ser modificada.

Ahora es el momento de modificar el código. Por ejemplo, edita el código de ProSignInHelperProvider.java y añade una condición adicional en el método isAuthorized(), como esta:

Luego haz un mvn install en xavapro, de esta forma:

En esta ocasión no ha sido necesario hacer un mvn clean porque es la primera vez y target está vacío, pero si obtienes el código de una versión nueva de XavaPro deberías hacer un mvn clean también.

Ahora, ve a tu proyecto, edita el pom.xml, busca la dependencia xavapro y reemplaza ${openxava.version} por tu propia versión SNAPSHOT (7.0.2-SNAPSHOT en nuestro ejemplo). No cambies el valor de la propiedad openxava.version (a menos que también estés trabajando con tu propia versión modificada de OpenXava):

Esto es importante, de lo contrario tu proyecto no usará el xavapro que has modificado, sino la versión oficial de tu repositorio Maven.

Después haz un mvn clean en tu proyecto:

Y un mvn install también en tu proyecto:

¡Enhorabuena! Tu proyecto está listo para ejecutarse con tu XavaPro modificado. Pruébalo.

Acortar el ciclo de modificación

Los pasos anteriores son para la primera modificación. A partir de ahora, las próximas modificaciones serán mucho más fáciles, solo tres pasos:

  1. Modifica el código de xavapro.
  2. Haz un mvn install en xavapro.
  3. Haz un mvn war:exploded en tu proyecto. Para esto puedes usar Run As > Build Maven ...

Eso no es todo, también puedes iniciar tu aplicación en modo de depuración, pulsando el botón con el escarabajo:

De esta forma puedes modificar el código en xavapro y ver el resultado al instante, incluso sin reiniciar tu aplicación o recargar el navegador. Magia pura.

Recarga del código en caliente (nuevo en v7.5)

A partir de la versión 7.5 puedes acorta todavía más el ciclo de modificación gracias a la carga del código en caliente, si usas el JDK incluido en OpenXava Studio 7 R4. Pero para que el código de XavaPro también se recargue en caliente has de hacer una pequeña modificación en tu clase lanzadora:

public static void main(String[] args) throws Exception {
    AppServer.run("tuaplicacion", "../xavapro/target/classes"); 
}

Nota como añadimos como segundo argumento la ruta de las clases del proyecto xavapro (si también tienes el código de OpenXava en tu entorno puedes añadir un tercer argumento con ../openxava/target/classes). En el ejemplo partimos de la base de que tienes xavapro y tu proyecto en el mismo directorio. De esta forma el ciclo de modificación se reduce a nada. Solo has de tocar el código Java en xavapro y usar tu aplicación en el navegador, ni siquiera has de recargar para tener los efectos.

La recarga del código en caliente no incluye los recursos web (JSP, HTML, CSS, etc) para eso tendrás que copiar los archivos (usando el sistema operativo) desde xavapro/src/main/resources/META-INF/resources a tuaplicacion/target/tuaplicacion. Así, tendrias los cambios con solo pulsar en recargar en el navegador, además sin ensuciar el proyecto porque todo lo que hay en target se va al hacer un mvn clean.