From bffea8e490daed30bd5b350c413c63ae04319a73 Mon Sep 17 00:00:00 2001 From: Miguel Reboiro-Jato Date: Sun, 9 Feb 2020 20:44:41 +0100 Subject: [PATCH] Adds auto-redeploy execution with independent backend and frontend The POM and other configuration files have been updated to support a new execution mode where Cargo is used to execute the backend and NPM to execute the frontend, both in auto-redeploy mode. --- README.md | 24 +++++- pom.xml | 120 ++++++++++++++++++++++++++++- src/main/angular/package-lock.json | 2 +- src/main/angular/package.json | 2 +- src/main/webapp/WEB-INF/web.xml | 14 +++- 5 files changed, 150 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 35ed10d..f90c5a3 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Ingeniería Informática de la Universidad de Vigo. La configuración de Maven ha sido preparada para permitir varios tipos de ejecución. -### Ejecución de la aplicación con Tomcat y MySQL +### Ejecución El proyecto está configurado para poder ejecutar la aplicación sin tener que realizar ninguna configuración adicional salvo tener disponible un servidor @@ -26,24 +26,40 @@ comandos (desde la raíz el proyecto): Una vez configurada la base de datos podemos lanzar la ejecución con el comando: -`mvn -Prun-tomcat-mysql -DskipTests=true package cargo:run` +`mvn -Prun package cargo:run` La aplicación se servirá en la URL local: http://localhost:9080/DAAExample Para detener la ejecución podemos utilizar `Ctrl+C`. -### Ejecución de la aplicación con Tomcat y MySQL con redespliegue automático +### Ejecución con redespliegue automático Durante el desarrollo es interesante que la apliación se redespliegue de forma automática cada vez que se hace un cambio. Para ello podemos utilizar el siguiente comand: -`mvn -Prun-tomcat-mysql -DskipTests=true package cargo:start fizzed-watcher:run` +`mvn -Prun package cargo:start fizzed-watcher:run` La aplicación se servirá en la URL local: http://localhost:9080/DAAExample Para detener la ejecución podemos utilizar `Ctrl+C`. +### Ejecución con redespliegue automático independiente para backend y frontend (recomendado) + +A diferencia del modo de redespliegue automático anterior, en este caso +*backend* y *frontend* se ejecutarán de forma independiente. Esto hace que los +cambios en las clases Java harán que se redespliegue el *backend*, mientras que +los cambios en Angular harán que se redespliegue el *frontend*. + +`mvn -Prun-independent-autoredeploy exec:exec@npm-build exec:exec@npm-start package cargo:start fizzed-watcher:run` + +La aplicación se servirá en local: + + * **Backend**: http://localhost:9080/DAAExample + * **Frontend**: http://localhost:4200 + +Para detener la ejecución podemos utilizar `Ctrl+C`. + ### Construcción con tests de unidad e integración En esta construcción se ejecutarán todos los tests relacionados con el backend: diff --git a/pom.xml b/pom.xml index 09fcb7e..0d297da 100644 --- a/pom.xml +++ b/pom.xml @@ -24,6 +24,7 @@ UTF-8 ${project.basedir}/servers false + false true 8.5.27 6300 @@ -201,7 +202,6 @@ - maven-war-plugin org.apache.maven.plugins @@ -247,6 +247,7 @@ exec-npm-ng-build generate-sources + ${skip-npm-build} ${project.basedir}/src/main/angular npm @@ -360,6 +361,7 @@ + @@ -597,11 +599,12 @@ - run-tomcat-mysql + run false + true true @@ -674,6 +677,119 @@ + + run-independent-autoredeploy + + false + + + true + true + true + + + + + + org.codehaus.mojo + exec-maven-plugin + ${exec-maven-plugin.version} + + ${project.basedir}/src/main/angular + npm + exec + + + + npm-build + + + run + build + + + + + + npm-start + + true + true + + start + + + + + + + + com.fizzed + fizzed-watcher-maven-plugin + ${fizzed-watcher-maven-plugin.version} + + true + + + src/main + src/main/angular + + + + package + cargo:redeploy + + + + + + org.codehaus.cargo + cargo-maven2-plugin + ${cargo-maven2-plugin.version} + + + tomcat8x + + https://repo1.maven.org/maven2/org/apache/tomcat/tomcat/${tomcat.version}/tomcat-${tomcat.version}.zip + ${project.servers.directory}/downloads + ${project.servers.directory}/extracts + + + + mysql + mysql-connector-java + + + + + + ${project.build.directory}/catalina-base + + + tomcat/server.mysql.xml + conf/server.xml + + + + 9080 + + cargo.datasource.jndi=jdbc/daaexample| + cargo.datasource.driver=com.mysql.jdbc.Driver| + cargo.datasource.url=jdbc:mysql://localhost/daaexample| + cargo.datasource.username=daa| + cargo.datasource.password=daa| + cargo.datasource.maxActive=8| + cargo.datasource.maxIdle=4| + cargo.datasource.maxWait=10000 + + + + + + + + + geckodriver-download-unix diff --git a/src/main/angular/package-lock.json b/src/main/angular/package-lock.json index 1d3e8ae..1df608a 100644 --- a/src/main/angular/package-lock.json +++ b/src/main/angular/package-lock.json @@ -1,6 +1,6 @@ { "name": "daa-example", - "version": "0.2.0-alpha.6", + "version": "0.2.0-alpha.7", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/src/main/angular/package.json b/src/main/angular/package.json index 553c5fb..2b3d585 100644 --- a/src/main/angular/package.json +++ b/src/main/angular/package.json @@ -1,6 +1,6 @@ { "name": "daa-example", - "version": "0.2.0-alpha.6", + "version": "0.2.0-alpha.7", "scripts": { "ng": "./node_modules/.bin/ng", "start": "./node_modules/.bin/ng serve", diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index d920eed..a32d8cd 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -9,7 +9,7 @@ index.html - + CorsFilter org.apache.catalina.filters.CorsFilter @@ -17,6 +17,14 @@ cors.allowed.origins * + + cors.allowed.headers + Authorization + + + cors.allowed.methods + GET, POST, DELETE, PUT + CorsFilter @@ -31,7 +39,6 @@ DELETE GET POST - OPTIONS ADMIN @@ -43,11 +50,10 @@ Admin Area /rest/people/* + GET PUT DELETE - GET POST - OPTIONS ADMIN -- 2.18.1