Aquesta guia va dirigida a tots aquells usuaris que vulguin actualitzar a Canigó 3.8 la seva aplicació Canigó 3.6.
Els passos descrits en aquest document apliquen a la versió 3.8 del Framework Canigó.
Al mes de gener del 2024 s’ha publicat la versió 3.8 del Framework Canigó. Aquesta versió és una versió LTS i es recomana actualitzar les aplicacions Canigó a aquesta versió per tal de tenir un suport continuat, així com la màxima estabilitat que proporciona una versió LTS.
L’objectiu d’aquesta guia és mostrar els procediments necessaris per a actualitzar una aplicació realitzada amb Canigó 3.8 i el punt de partida d’aquesta guia és una aplicació creada amb l’arquetipus maven de Canigó.
A la Matriu de Compatibilitats podeu consultar les versions dels mòduls i components de Canigó de les versions 3.6.x i 3.8.x.
Per tant, caldrà fer:
1. Actualitzar els intervals de versions dels mòduls utilitzats per l’aplicació per a migrar a Canigó 3.8.0
2. Per a actualitzar de la versió 3.6 a la 3.8, es necessari realitzar l’actualització de les dependències del nostre projecte.
Les dependències específiques que han d’actualitzar-se la seva les següents:
2.1 Spring Boot 3.1.4
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.1.4</version>
</parent>
2.2 Spring Framework 6.1.1
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>6.1.1</version>
</dependency>
2.3 OpenJDK 17
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
2.4 Spring Security 6.1.3
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-core</artifactId>
<version>6.1.3</version>
</dependency>
2.5 Junit 4 a Junit 5 (Jupiter) 5.10.1.
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.10.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.10.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.10.1</version>
<scope>test</scope>
</dependency>
NOTA: Si tens dependències de Javax, és necessari actualitzar-les a la versió més recent de Jakarta, ja que OpenJDK 17 no és compatible amb Javax.
Un cop actualitzades les versions dels mòduls, segons s’ indica a la secció anterior, serà necessari realitzar els següents passos:
1. Reemplaça les dependències de Javax per Jakarta en l’arxiu pom.xml.
Pom.xml
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
per
<dependency>
<groupId>jakarta.annotation</groupId>
<artifactId>jakarta.annotation-api</artifactId>
<version>1.3.5</version>
</dependency>
2. Reemplaçar l’ imports de javax per jakarta en totes les classes Java que utilitzin el import de javax.
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
per
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.persistence.Query;
3. És necessari modificar els JUnit per a utilitzar JUnit 5 (Jupiter).
Per a realitzar les modificacions correctament, hem de tenir en compte els següents punts:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.10.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.10.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.10.1</version>
<scope>test</scope>
</dependency>
2.: Actualitzar les següents anotacions en el nostre codi perquè siguin compatibles amb JUnit 5.
@org.junit.Test per @org.junit.jupiter.api.Test (import org.junit.jupiter.api.Test;).
@Before ara és @BeforeEach (import org.junit.jupiter.api.BeforeEach;).
@After ara és @AfterEach (import org.junit.jupiter.api.AfterEach;).
@BeforeClass ara és @BeforeAll (import org.junit.jupiter.api.BeforeAll;).
@AfterClass ara és @AfterAll (import org.junit.jupiter.api.AfterAll;).
@Ignore ara és @Disabled (import org.junit.jupiter.api.Disabled;).
@RunWith ara és @ExtendWith (import org.junit.jupiter.api.extension.ExtendWith;)
@Category ara és @Tag (import org.junit.jupiter.api.Tag;)
@Test (expected = Exception.class) ara és Assertions.assertThrows
@Test(expected = IndexOutOfBoundsException.class)
public void testIndexOutOfBoundsException() {
ArrayList emptyList = new ArrayList();
Object o = emptyList.get(0);
}
per
@Test
public void testIndexOutOfBoundsException() {
ArrayList emptyList = new ArrayList();
Assertions.assertThrows(IndexOutOfBoundsException.class, () -> {
Object o = emptyList.get(0);
});
}
4. És recomanable utilitzar l’última versió de l’schema del XSD de Spring Security. Per exemple de: http://www.springframework.org/schema/security/spring-security-5.4.xsd a: http://www.springframework.org/schema/security/spring-security.xsd
5. S’ha modificat la URL d’accés a swagger passant de: http://localhost:8080/swagger-ui/index.html a: http://localhost:8080/api/swagger-ui/index.html