Passer au contenu principal

Configuration du Projet avec Apache Maven

Prérequis​

Dans cet exemple, nous utiliserons Apache Maven, donc cliquez sur le lien précédent pour obtenir des informations sur la façon de l'installer.

Vous devrez également avoir Java installé.

Installez la plateforme Netuno. Le projet Java sera intégré à la plateforme Netuno préinstallée.

Package du Code​

Comme il est de coutume en Java, le code doit toujours avoir un package.

Votre package doit être enregistré dans le fichier de configuration globale de Netuno :

  • netuno/config.js

Ajoutez à la fin le code suivant :

config.packagesScan.add("mon.projet.java")

Si votre package n'est pas ajouté à la configuration de cette manière, alors votre projet ne sera jamais chargé, car Netuno ne recherche que les ressources et services dans les packages préalablement ajoutés.

Une alternative pour éviter d'enregistrer le package dans la configuration est d'utiliser des packages Java qui commencent par org.netuno.

Netuno recherche automatiquement les ressources et services qui se trouvent dans des packages commençant par org.netuno.

Il est recommandé d'utiliser le préfixe : org.netuno.addon

Par exemple, nous pouvons utiliser : org.netuno.addon.calcul

Le préfixe de package org.netuno.addon distingue qu'il s'agit d'une fonctionnalité ajoutée de l'extérieur et qui ne fait pas partie de Netuno lui-même.

Par conséquent, tout votre code Java qui s'intègre à Netuno doit être défini et construit dans :

  • org.netuno.addon.mon.projet

Après org.netuno.addon, ajoutez l'identification de votre projet.

Configuration du POM​

Netuno possède de nombreuses dépendances au format JAR, il est donc nécessaire de définir ces dépendances dans le POM. Comme le POM ne prend pas en charge l'inclusion d'un dossier entier et que écrire chaque dépendance serait laborieux et fastidieux, nous allons faire un script en JavaScript pour générer le POM.

Préliminaires​

Créez le dossier de votre projet, où seront écrites les classes Java. Pour notre exemple, nous allons utiliser Calcul :

mkdir Calcul

Créez le fichier generate-pom.js. Dans ce fichier, nous allons commencer par définir quelques variables qui seront utilisées tout au long du script. NETUNO_REPERTOIRE doit être le dossier racine où vous avez installé Netuno. PROJET_REPERTOIRE est le répertoire où vous allez écrire vos classes de ressources et services globaux. Et PAQUET doit être identique au nom du package comme défini dans les étapes précédentes. Sélectionnez également la version de Java avec VERSION_JAVA. Les chemins doivent être des chemins absolus :

const NETUNO_REPERTOIRE = '/dossier/racine/du/netuno';
const PROJET_REPERTOIRE = '/Projets/Netuno/Calcul';
const PAQUET = 'org.netuno.addon.calcul';
const VERSION_JAVA = 25;

Maintenant, nous allons initialiser la structure de base du pom.xml :

const partiesPackage = PAQUET.split(".");
const ID_ARTEFACT = partiesPackage.slice(-1);
const ID_GROUPE = partiesPackage.slice(0, partiesPackage.length - 1).join(".");

let contenuPom = `
<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>${ID_GROUPE}</groupId>
<artifactId>${ID_ARTEFACT}</artifactId>
<version>1.0-SNAPSHOT</version>

<properties>
<maven.compiler.source>${VERSION_JAVA}</maven.compiler.source>
<maven.compiler.target>${VERSION_JAVA}</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
`;

Dépendances​

Ensuite, nous allons créer la fonction qui parcourt les répertoires et génère une balise <dependency> pour chaque fichier JAR de dépendance de Netuno :

function parcourirRepertoire(dossier, suffixeGroupe) {
let xmlDependances = '';
try {
const fichiers = readdirSync(dossier);
for (const fichier of fichiers) {
const cheminComplet = join(dossier, fichier);
if (statSync(cheminComplet).isFile() && extname(fichier) === '.jar') {
const nomBase = basename(fichier, '.jar');
xmlDependances += `
<dependency>
<groupId>org.netuno.${suffixeGroupe}</groupId>
<artifactId>${nomBase}</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${cheminComplet}</systemPath>
</dependency>`;
}
}
} catch (error) {
console.error(`Erreur lors de la lecture du répertoire ${dossier} :`, error.message);
}
return xmlDependances;
}

Nous allons utiliser cette fonction pour mapper les deux répertoires de dépendances :

const dependancesCore = parcourirRepertoire(join(NETUNO_REPERTOIRE, 'core', 'lib'), 'core');
const dependancesWeb = parcourirRepertoire(join(NETUNO_REPERTOIRE, 'core', 'web', 'WEB-INF', 'lib'), 'web');

Et injecter les dépendances dans le POM, avec le netuno.jar :

contenuPom += `
<dependencies>
<dependency>
<groupId>org.netuno</groupId>
<artifactId>netuno-root</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${NETUNO_REPERTOIRE}/netuno.jar</systemPath>
</dependency>
${dependancesCore}
${dependancesWeb}
</dependencies>
`;

Fichier JAR​

Nous devons définir le répertoire de destination pour les fichiers JAR. Cette étape est nécessaire pour que nous ayons l'option de compiler notre projet en un fichier JAR :

contenuPom += `
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.4.2</version>
<configuration>
<outputDirectory>${NETUNO_REPERTOIRE}/lib</outputDirectory>
</configuration>
</plugin>
`;

Nettoyage​

Maintenant, nous devons configurer Maven pour que la commande mvn clean supprime les fichiers corrects lorsqu'elle est invoquée :

const CHEMIN_PAQUET = PAQUET.replaceAll(".", "/");
contenuPom += `
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>3.4.0</version>
<configuration>
<filesets>
<fileset>
<directory>${NETUNO_REPERTOIRE}/lib</directory>
<includes>
<include>${ID_ARTEFACT}-*.jar</include>
</includes>
<followSymlinks>false</followSymlinks>
</fileset>
<fileset>
<directory>${NETUNO_REPERTOIRE}/core/web/WEB-INF/classes</directory>
<includes>
<include>${CHEMIN_PAQUET}/**</include>
</includes>
<followSymlinks>false</followSymlinks>
</fileset>
</filesets>
</configuration>
</plugin>
</plugins>
</build>
`;

Profil​

Pour que nous puissions choisir entre compiler le projet en générant des fichiers .class ou générer des fichiers .jar, nous devons créer un profil différent et configurer le compilateur avec le chemin correct. Et ainsi nous finalisons le contenu du POM :

contenuPom += `
<profiles>
<profile>
<id>dev</id>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<outputDirectory>${NETUNO_REPERTOIRE}/core/web/WEB-INF/classes</outputDirectory>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>`;

Finalisation​

Enfin, nous allons écrire le résultat dans le fichier pom.xml :

try {
writeFileSync(`${PROJET_REPERTOIRE}/pom.xml`, contenuPom.trim() + '\n', 'utf8');
console.log(`Configuration terminée. Le fichier pom.xml a été mis à jour à : ${PROJET_REPERTOIRE}/pom.xml`);
} catch (error) {
console.error("Erreur lors de l'écriture de pom.xml :", error);
}

Pour générer le POM, exécutez cette commande dans le dossier racine de votre projet :

bun generate-pom.js

Vous pouvez voir le script complet de génération du POM sur ce lien.

Compilation​

Maintenant, vous pouvez compiler votre projet avec :

mvn clean compile -Pdev

Ou générer des fichiers JAR, ce qui facilite la distribution du code vers d'autres instances de Netuno qui se trouvent sur d'autres ordinateurs, avec :

mvn clean package

Pour nettoyer les fichiers générés par les commandes compile et package :

mvn clean

Publier le fichier JAR​

Le fichier JAR créé peut être distribué et placé sur n'importe quelle autre plateforme Netuno.

Sur toute plateforme Netuno installée, ce JAR doit être placé dans le dossier lib à la racine de Netuno :

  • netuno/lib

Notez que ce dossier n'existe pas par défaut, il peut donc être nécessaire de le créer.

Tous les JARs qui se trouvent dans ce dossier sont automatiquement chargés dans la plateforme Netuno.

Exécution​

Pour exécuter le projet, démarrez Netuno normalement :

./netuno server app=calcul

L'application doit être créée au préalable avec la commande : ./netuno app.

Conclusion​

Nous avons vu comment créer un nouveau projet Java pour ajouter de nouveaux comportements au cœur de Netuno.

Nous avons également vu les bonnes pratiques pour générer le fichier JAR et comment le distribuer dans le dossier netuno/lib.

Toutes les techniques et bibliothèques de programmation Java peuvent être utilisées pour créer tout type de fonctionnalité dans Netuno.

En particulier, créer des ressources de programmation low-code qui sont disponibles pour tous les langages de script pris en charge, tels que :

  • JavaScript
  • Python
  • Ruby
  • Kotlin
  • Groovy

Dans les tutoriels suivants, voyez comment créer votre première ressource de programmation low-code.

Et aussi comment créer votre premier service web multi-applicatif, disponible dans toutes les applications configurées dans Netuno.