2023-10 : Guide de migration Maven
Résumé
Liste des changements à apporter à l’environnement de build pour passer de Gradle 4.5 à Maven 3.8.
Ticket JIRA et commit
Avant de toucher à un module, il faut créer un ticket JIRA avec comme titre :
[Nom de l’app] - Migration Maven
Après chaque portage, le message de commit doit être le suivant :
"feat: #<NUM_TICKET>, migration Maven"
Portage
pom.xml
Pour un module SANS création de JARs
Reprendre le squelette ci-dessous, adapter en suivant les commentaires.
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>io.edifice</groupId>
<artifactId>edifice-parent</artifactId>
<version>1.0</version>
</parent>
<groupId>fr.wseduc</groupId><!-- Vient de gradle.properties > modowner -->
<artifactId>web-utils</artifactId><!-- Vient de gradle.properties > modname -->
<version>3.0-b2school-SNAPSHOT</version><!-- Vient de gradle.properties > version -->
<repositories>
<repository>
<id>ode</id>
<name>ODE Repository</name>
<url>https://maven.opendigitaleducation.com/nexus/content/groups/public</url>
</repository>
</repositories>
<properties><!-- Reporter les versions des dépendances de gradle.properties > -->
<jacksonDatabindVersion>2.15.2</jacksonDatabindVersion>
</properties>
<dependencies><!-- Reporter les dépendances qui étaient dans build.gradle > dependencies -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jacksonDatabindVersion}</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
Pour un module AVEC création de JARs (.jar, -fat.jar, -test.jar, -deployment.jar)
Reprendre le squelette ci-desous, adapter en suivant les commentaires.
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>io.edifice</groupId>
<artifactId>app-parent</artifactId>
<version>1.0</version>
</parent>
<groupId>net.atos</groupId><!-- Vient de gradle.properties > modowner -->
<artifactId>actualites</artifactId><!-- Vient de gradle.properties > modname -->
<version>2.0-b2school-SNAPSHOT</version> <!-- Vient de gradle.properties > version -->
<scm><!-- Adapter avec l'url du repertoire (github, gitlab...) -->
<connection>scm:git:https://github.com/OPEN-ENT-NG/actualites.git</connection>
<developerConnection>scm:git:https://github.com/OPEN-ENT-NG/actualites.git</developerConnection>
<url>https://github.com/OPEN-ENT-NG/actualites</url>
</scm>
<repositories>
<repository>
<id>ode</id>
<name>ODE Repository</name>
<url>https://maven.opendigitaleducation.com/nexus/content/groups/public</url>
</repository>
</repositories>
<properties><!-- Reporter les versions des dépendances de gradle.properties -->
<web-utils.version>3.0-b2school-SNAPSHOT</web-utils.version>
</properties>
<dependencies><!-- Reporter les dépendances qui étaient dans build.gradle > dependencies -->
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-core</artifactId>
<version>${vertxVersion}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>fr.wseduc</groupId>
<artifactId>web-utils</artifactId>
<version>${web-utils.version}</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
docker-compose.yml
Remplacer le service gradle par le service maven
tel que décrit plus bas.
services:
maven:
image: maven:3.8.6-jdk-8
user: "$DEFAULT_DOCKER_USER"
working_dir: /usr/src/maven
volumes:
- ./:/usr/src/maven
- ~/.m2:/var/maven/.m2
environment:
MAVEN_CONFIG: /var/maven/.m2
build.sh
Ajouter au début du fichier la variable MVN_OPTS tel que décrit ci-dessous.
Remplacer les appels au service gradle par des appels au service maven tel que ci-dessous.
Avant:
Après :
Ajouter les méthodes init
, install
et test
et les ajouter à la liste des options supportées (la méthode install
remplace buildGradle
)
Modifier la méthode publish pour qu’elle soit équivalente à celle écrite ci-dessous :
Exemple complet :
Jenkinsfile
Ajouter l'étape “Initialization”.
Au tout premier argument du build.sh, ajouter le paramètre init afin d’initialiser le fichier .env
Avant :
Après :
.gitignore
Ajouter les lignes suivantes