Estás viendo una versión antigua de esta página. Ve a la versión actual.

Comparar con el actual Ver el historial de la página

« Anterior Versión 2 Siguiente »

Como siguiente evolución del framework FundeWebJS, se ha desarrollado un proyecto que actuará de parent maven para todas nuestras APIs.
Además, se ha desarrollado una librería starter  para incluir dependencias y configuraciones comunes.

Está página es una guía para la migración de aplicaciones Spring-Boot al parent FundeWebJS .
Con esto se consigue simplificar la configuración de los proyectos y centralizar el versionado de las librerías de Spring-Boot.

Guía detallada


El parent de FundeWebJS se ha desarrollado con la versión de Spring-Boot 2.7.10.


A continuación se detallan los pasos a realizar para completar la migración:

1. Fichero pom.xml

    1. Sustituir la etiqueta <parent> completa por:

      	<parent>
      		<groupId>es.um.atica</groupId>
      		<artifactId>fundewebjs-api-parent</artifactId>
      		<version>1.0.2</version>
      		<relativePath>../pom.xml</relativePath>
      	</parent>
    2.  En la etiqueta groupId de la aplicación, añadir "fundewebjs" a "<groupId>es.um.atica</groupId>". Por ejemplo, para la aplicación api-base quedaría:

      	<groupId>es.um.atica.fundewebjs</groupId>
      	<artifactId>api-base</artifactId>
    3. En la etiqueta <properties> dejar las siguientes:

       	<properties>
      		<java.version>11</java.version>
      		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      	</properties>

      Si la aplicación tenía otras propiedades configuradas, habrá que valorar si siguen siendo necesarias teniendo en cuenta que la mayoría de las dependencias y versiones están fijadas por la librería fundewebjs-spring-boot-starter .
      Se recomienda quitarlas todas e ir añadiendo posteriormente solo las necesarias cuando se traten las dependencias en el apartado e .

      (menos) NUNCA deben configurarse las propiedades de versiones de spring-boot o spring-cloud . (menos)

    4. Si existe la etiqueta <dependencyManagement> sustituir por el siguiente código. Si no existe, añadirla:

      	<dependencyManagement>
      		<dependencies>
      			<dependency>
      				<groupId>org.springframework.boot</groupId>
      				<artifactId>spring-boot-dependencies</artifactId>
      				<version>${spring-boot.version}</version>
      				<type>pom</type>
      				<scope>import</scope>
      			</dependency>
      		</dependencies>
      	</dependencyManagement>


      Como se ha mencionado en el apartado anterior, la mayoría de dependencias necesarias vienen ya incluidas con fundewebjs-spring-boot-starter.
      Si nuestro pom.xml incluía en dependencyManagement la dependencia de spring-cloud, se recomienda eliminarla y terminar la configuración del pom.xml.
      Si finalmente fuera necesario, se puede incluir el bom de spring-cloud dentro de dependencyManagement exactamente así:

      		<dependency>
      			<groupId>org.springframework.boot</groupId>
      			<artifactId>spring-boot-dependencies</artifactId>
      			<version>${spring-boot.version}</version>
      			<type>pom</type>
      			<scope>import</scope>
      		</dependency>
    5. En la etiqueta <dependencies> la mayoría de las dependencias ya no van a ser necesarias.
      Se recomienda copiar todas las dependencias a un fichero .txt aparte y sustituir toda la etiqueta por:

      	<dependencies>
      		<dependency>
      			<groupId>es.um.atica</groupId>
      			<artifactId>fundewebjs-spring-boot-starter</artifactId>
      		</dependency>
      	</dependencies>


      Esta dependencia engloba todas las librerías necesarias para trabajar con una aplicación FundeWebJS estándar.



      Después de este cambio se aconseja realizar un maven update project con force.
      Si hay errores en el código, se recomienda revisar el fichero .txt con las dependencias antiguas y añadir la que sea necesaria.

      Este es el apartado más complicado de la migración, en caso de dudas sobre las librerías poner Jira a DJ-AT-MNCS como se indica al final de esta guía.

    6. En la etiqueta <build> configurar los siguientes plugins:

         	<build>
      		<plugins>
      			<plugin>
      				<groupId>org.hibernate.orm.tooling</groupId>
      				<artifactId>hibernate-enhance-maven-plugin</artifactId>
      			</plugin>
      			<plugin>
      				<groupId>org.jacoco</groupId>
      				<artifactId>jacoco-maven-plugin</artifactId>
      			</plugin>
      			<plugin>
      				<groupId>org.springframework.boot</groupId>
      				<artifactId>spring-boot-maven-plugin</artifactId>
      			</plugin>
      		</plugins>
      	</build>

      Si el plugin para generar clientes SOAP estaba configurado, <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifactId>, hay que mantenerlo configurado tal cuál estaba.

    7. En la etiqueta <repositories> configurar el repositorio de archiva de fundewebjs:

      	<repositories>
      		<repository>
      			<id>fundewebjs-archiva</id>
      			<name>ATICA - UMU Repository - FundeWebJS</name>
      			<url>https://archiva.um.es/archiva/repository/FundeWebJS/</url>
      		</repository>
      	</repositories>
    8. Una vez realizados estos pasos, realizar un maven update project con la casilla Force Update of Snapshots/Releases marcada.

      Ejemplo de pom.xml migrado:

      Ejemplo pom.xml
      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
      	<modelVersion>4.0.0</modelVersion>
      	<parent>
      		<groupId>es.um.atica</groupId>
      		<artifactId>fundewebjs-api-parent</artifactId>
      		<version>1.0.2</version>
      		<relativePath>../pom.xml</relativePath>
      	</parent>
      
      	<groupId>es.um.atica.fundewebjs</groupId>
      	<artifactId>acade-api-certificados</artifactId>
      	<version>0.0.1-SNAPSHOT</version>
      	<name>acade-api-api</name>
      	<description>Acade API Certificados</description>
         
         	<properties>
      		<java.version>11</java.version>
      		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
      	</properties>
         
      	<dependencyManagement>
      		<dependencies>
      			<dependency>
      				<groupId>org.springframework.boot</groupId>
      				<artifactId>spring-boot-dependencies</artifactId>
      				<version>${spring-boot.version}</version>
      				<type>pom</type>
      				<scope>import</scope>
      			</dependency>
      		</dependencies>
      	</dependencyManagement>
      	
      	<dependencies>
      		<dependency>
      			<groupId>es.um.atica</groupId>
      			<artifactId>fundewebjs-spring-boot-starter</artifactId>
      		</dependency>
      	</dependencies>
      
      	<repositories>
      		<repository>
      			<id>fundewebjs-archiva</id>
      			<name>ATICA - UMU Repository - FundeWebJS</name>
      			<url>https://archiva.um.es/archiva/repository/FundeWebJS/</url>
      		</repository>
      	</repositories>
      
      	<build>
      		<plugins>
      			<plugin>
      				<groupId>org.hibernate.orm.tooling</groupId>
      				<artifactId>hibernate-enhance-maven-plugin</artifactId>
      			</plugin>
      			<plugin>
      				<groupId>org.jacoco</groupId>
      				<artifactId>jacoco-maven-plugin</artifactId>
      			</plugin>
      			<plugin>
      				<groupId>org.springframework.boot</groupId>
      				<artifactId>spring-boot-maven-plugin</artifactId>
      			</plugin>
      
      			<!-- SOAP -->
      			<plugin>
      				<groupId>org.jvnet.jaxb2.maven2</groupId>
      				<artifactId>maven-jaxb2-plugin</artifactId>
      				<version>0.14.0</version>
      				<executions>
      					<execution>
      						<goals>
      							<goal>generate</goal>
      						</goals>
      					</execution>
      				</executions>
      				<configuration>
      					<args>
      						<arg>-XautoNameResolution</arg>
      					</args>
      					<schemaLanguage>WSDL</schemaLanguage>
      					<generateDirectory>${project.basedir}/src/main/java</generateDirectory>
      					<generatePackage>es.um.atica.acade-api.soap.gen</generatePackage>
      					<schemaDirectory>${project.basedir}/src/main/resources/wsdl</schemaDirectory>
      					<schemaIncludes>
      						<include>ServicioRegistroUMU.wsdl</include>
      					</schemaIncludes>
      				</configuration>
      			</plugin>
      		</plugins>
      	</build>
      </project>

2. Clase Application.

La clase application es la clase principal de nuestro proyecto, contiene el método main que se ejecuta al arrancar la aplicación y tiene la anotación @SpringBootApplication. 
Habitualmente se encuentra en el paquete raíz de la aplicación.

De cara la migración hay que realizar la siguiente configuración:

1. En caso de no estar configurado ya, añadir el paquete "es.um.atica.fundewebjs" al parámetro scanBasePackages de la anotación @SpringBootApplication. :

@SpringBootApplication( scanBasePackages = {
		"es.um.atica.MIPAQUETE", "es.um.atica.fundewebjs"
} )
public class MIAPLICACIONApiApplication 

3. Configuración CORS.

Si tenemos una clase CorsConfig o un método 







Referencias

No hay ningún contenido con las etiquetas especificadas



Crear una rama git local nueva para realizar los cambios de la migración.

  • Sin etiquetas