Create Entorno PWM Java authored by Víctor Torterola's avatar Víctor Torterola
La idea de este instructivo es dejar documentada la forma de poder modificar y debuggear el código Java de PWM ya que para nuestro uso tendríamos algunas necesidades que no están contempladas.
Se intento crear el entorno de desarrollo con [Eclipse](https://www.eclipse.org/downloads/) importando todas las dependencias pero no llegamos a lograr un debug del código para ir analizando los cambios. Algo similar a lo anterior sucede con [Netbeans](https://netbeans.org/downloads/8.2/rc/).
Por lo antes mencionado se decide probar el entorno de desarrollo con [Intellij](https://www.jetbrains.com/es-es/idea/download/#section=linux) y es lo que vamos a describir a continuación.
El entorno se instalara sobre Ubuntu 18.04 y Java 11
* instalar [Maven](https://maven.apache.org/download.cgi) ````sudo apt install maven````
* clonar el proyecto PWM en una carpeta que se acceda sin sudo. Ej. /home/user/pwm
* resolvemos dependencia maven e importación de paquetes
````
cd /home/user/pwm
mvn package -Dmaven.test.skip=true -Dcheckstyle.skip=true
````
* descargar [Tomcat 9](https://tomcat.apache.org/download-90.cgi) y descomprimirlo también en una carpeta que se acceda sin sudo. Ej. /home/user/tomcat9
* descargar [IntelliJ](https://www.jetbrains.com/es-es/idea/download/download-thanks.html?platform=linux) se podrá utilizar por un mes gratis sino se deberá comprar una licencia
* el tar.gz descargado lo descomprimimos en /opt/intellij por ejemplo.
* ejecutamos desde una terminal ./opt/intellij/bin/idea.sh
* para abrilo File -> Manage IDE Settings -> Import Settings -> POM.XML el proyecto PWM contiene varios sub-proyectos por lo que para abrirlo de forma correcta vamos a buscar el pom.xml del proyecto principal (Ahora ponte cómodo porque demora unos 40' en finalizar)
* debemos configurar ahora el deploy Run -> Edit Configurations estando aquí presionamos el + y buscamos ````Tomcat Server-> Local```` y ahí configuramos todo como indica la imagen siguiente. Debemos también en Before Launch presionando + agregar Build Artifacts y seleccionar el proyecto pwm:war
![configDebug](uploads/35d562b2d564a219e7fdff7f95162144/configDebug.png)
* en esta misma pantalla ahora vamos a logs y tildamos save y decimos donde guardar nuestro log local para poder interpretar errores que se presenten.
![logsIntellij](uploads/98c6ca6eee514eed5c91e4be462dad08/logsIntellij.png)
* debemos crear en nuestra maquina ````mkdir /media/pwm```` y ahi colocar el archivo de configuración PwmConfiguration.xml Lo podemos bajar de login.interior.edu.uy de la misma ubicación ya que no hay un archivo porque lo arma el role Ansible. Dar permisos para que tomcat acceda a este archivo ````sudo chown -R user:user /media/pwm````
* en ````tomcat9/media/pwm```` se debera copiar el archivo domains.txt también lo podemos descargar desde login.interior.edu.uy en /media/pwm
* ya estamos en condiciones de hacer un debug. Al presionar el boton debug Intellij ya nos abrira en el explorador el PWM.
* conviene una vez que accedemos a la web, en la configuración desactivar el captcha y el envio de correos para hacer el debug.
**Preparación del nuevo WAR**
Una vez que tenemos funcional y probado en local los cambios podemos armar el WAR
Desde /home/user/pwm
* mvn clean install -U -Dmaven.test.skip=true -Dcheckstyle.skip=true
* mvn compile -Dmaven.test.skip=true -Dcheckstyle.skip=true
El WAR quedara en /home/user/pwm/webapp/target/pwm-2.0.0-SNAPSHOT.war este archivo debera subirse al proyecto [PWM](https://github.com/UdelaRInterior/pwm) como release.