...
"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.
Bloc de code |
---|
|
<?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>
<properties><!-- Reporter les versions des dépendances de gradle.properties > --> <repository>
<jacksonDatabindVersion>2.15.2</jacksonDatabindVersion><id>ode</id>
</properties> <dependencies><!-- Reporter les<name>ODE dépendancesRepository</name>
qui étaient dans build.gradle > dependencies --> <url>https://maven.opendigitaleducation.com/nexus/content/groups/public</url>
<dependency> </repository>
<groupId>com.fasterxml.jackson.core</groupId></repositories>
<properties><!-- Reporter les versions des dépendances <artifactId>jackson-databind</artifactId>de gradle.properties > -->
<jacksonDatabindVersion>2.15.2</jacksonDatabindVersion>
<version>${jacksonDatabindVersion} </version>properties>
<dependencies><!-- Reporter les dépendances qui étaient <scope>provided</scope>
dans build.gradle > dependencies -->
</dependency> <dependency>
</dependencies> </project>
|
...
<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.
Bloc de code |
---|
|
<?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" encoding="UTF-8"?>
<project xsi:schemaLocation
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://maven.apache.org/xsd/maven-4.0.0.xsd"//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>
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<groupId>net.atos</groupId><!-- Vient de gradle.properties > modowner -->
<artifactId>actualites</artifactId><!-- Vient de gradle.properties > modname -->
<modelVersion>4<version>2.0.0</modelVersion>
<parent>
<groupId>io.edifice</groupId>-b2school-SNAPSHOT</version> <!-- Vient de gradle.properties > version -->
<artifactId>app-parent</artifactId>
<version>1.0</version>
</parent><scm><!-- Adapter avec l'url du repertoire (github, gitlab...) -->
<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>
<connection>scm:git:https://github.com/OPEN-ENT-NG/actualites.git</connection><id>ode</id>
<developerConnection>scm:git:https://github.com/OPEN-ENT-NG/actualites.git</developerConnection><name>ODE Repository</name>
<url>https://githubmaven.opendigitaleducation.com/OPEN-ENT-NG/actualites</url>/nexus/content/groups/public</url>
</scm>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>${vertx.versionvertxVersion}</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> |
...
Remplacer le service gradle par le service maven
tel que décrit plus bas.
Bloc de code |
---|
|
version: "3"
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 |
...
Bloc de code |
---|
|
docker- compose run --rm maven mvn $MVN_OPTS clean |
...
Bloc de code |
---|
|
init() {
me=`id -u`:`id -g`
echo "DEFAULT_DOCKER_USER=$me" > .env
}
...
install () {
docker- compose run --rm maven mvn $MVN_OPTS install -DskipTests
}
test () {
docker- compose run --rm maven mvn $MVN_OPTS test
}
...
for param in "$@"
do
case $param in
init)
init
;;
...
install)
install
;;
test)
test
;;
... |
...
Bloc de code |
---|
|
publish() {
version=`docker- compose run --rm maven mvn $MVN_OPTS help:evaluate -Dexpression=project.version -q -DforceStdout`
level=`echo $version | cut -d'-' -f3`
case "$level" in
*SNAPSHOT) export nexusRepository='snapshots' ;;
*) export nexusRepository='releases' ;;
esac
docker- compose run --rm maven mvn -DrepositoryId=ode-$nexusRepository -DskiptTestsDskipTests -Dmaven.test.skip=true --settings /var/maven/.m2/settings.xml deploy
} |
...
Bloc de code |
---|
|
#!/bin/bash
MVN_OPTS="-Duser.home=/var/maven"
init() {
me=`id -u`:`id -g`
echo "DEFAULT_DOCKER_USER=$me" > .env
}
clean () {
docker- compose run --rm maven mvn $MVN_OPTS clean
}
install () {
docker- compose run --rm maven mvn $MVN_OPTS install -DskipTests
}
test () {
docker- compose run --rm maven mvn $MVN_OPTS test
}
publish() {
version=`docker- compose run --rm maven mvn $MVN_OPTS help:evaluate -Dexpression=project.version -q -DforceStdout`
level=`echo $version | cut -d'-' -f3`
case "$level" in
*SNAPSHOT) export nexusRepository='snapshots' ;;
*) export nexusRepository='releases' ;;
esac
docker- compose run --rm maven mvn -DrepositoryId=ode-$nexusRepository -DskiptTestsDskipTests -Dmaven.test.skip=true --settings /var/maven/.m2/settings.xml deploy
}
for param in "$@"
do
case $param in
init)
init
;;
clean)
clean
;;
install)
install
;;
test)
test
;;
publish)
publish
;;
*)
echo "Invalid argument : $param"
esac
if [ ! $? -eq 0 ]; then
exit 1
fi
done
|
...
Bloc de code |
---|
|
#!/usr/bin/env groovy
pipeline {
agent any
stages {
stage("Initialization"'Build') {
steps {
checkout scm
script { sh './build.sh clean install publish'
}
def version = sh(returnStdout: true, script: 'docker-compose run --rm maven mvn $MVN_OPTS help:evaluate -Dexpression=project.version -q -DforceStdout')
}
}
} |
Après :
Bloc de code |
---|
|
#!/usr/bin/env groovy
pipeline {
agent any
stages {
buildName "${env.GIT_BRANCH.replace stage("origin/Initialization",) "")}@${version}"
steps {
} } script {
} stage('Build') {
steps {
checkout scm def version = sh(returnStdout: true, script: 'docker compose run --rm maven mvn $MVN_OPTS help:evaluate -Dexpression=project.version -q -DforceStdout')
sh './build.sh clean install publish'
buildName "${env.GIT_BRANCH.replace("origin/", "")}@${version}"
} }
} }
} |
Après :
Bloc de code |
---|
|
#!/usr/bin/env groovy
pipeline { agent any
}
stages { stage('Build') {
steps {
checkout scm
sh './build.sh init clean install publish'
}
}
}
} |
...
Bloc de code |
---|
|
.env
target
dependency-reduced-pom.xml |