Conversion du fichier de construction Gradle en Maven POM

1. Introduction

Dans ce didacticiel, nous verrons comment convertir un fichier de construction Gradle en fichier Maven POM. Nous explorerons également quelques options de personnalisation disponibles.

2. Fichier de construction Gradle

Commençons par un projet Java Gradle standard, gradle-to-maven ,avec le fichier build.gradle suivant :

repositories { mavenCentral() } group = 'com.baeldung' version = '0.0.1-SNAPSHOT' apply plugin: 'java' dependencies { compile('org.slf4j:slf4j-api') testCompile('junit:junit') }

3. Plug-in Maven

Gradle est livré avec un plugin Maven, qui ajoute un support pour convertir un fichier Gradle en fichier Maven POM. Il peut également déployer des artefacts dans les référentiels Maven.

Pour l'utiliser, ajoutons le plugin Maven à notre fichier build.gradle :

apply plugin: 'maven'

Le plugin utilise le groupe et la version présents dans le fichier Gradle et les ajoute au fichier POM. En outre, il prend automatiquement l' artefactId du nom du répertoire.

Le plugin ajoute également automatiquement la tâche d' installation . Donc, pour convertir, exécutons ce qui suit:

gradle install

L'exécution de la commande ci-dessus crée un répertoire de construction avec trois sous-répertoires:

  • libs - contenant le fichier jar avec le nom $ {artifactId} - $ {version} .jar
  • poms - contenant le fichier POM converti avec le nom pom-default.xml
  • tmp / jar - contenant le manifeste

Le fichier POM généré ressemblera à ceci:

  4.0.0 com.baeldung gradle-to-maven 0.0.1-SNAPSHOT   org.slf4j slf4j-api compile   junit junit test   

La tâche d' installation télécharge également le fichier POM généré et le JAR dans le référentiel Maven local.

4. Personnalisation du plugin Maven

Dans certains cas, il peut être utile de personnaliser les informations du projet dans le fichier POM généré. Nous allons jeter un coup d'oeil.

4.1. groupId, artifactId et version

La modification du groupId , de l' artefactId et de la version du POM peut être gérée dans le bloc d' installation :

install { repositories { mavenInstaller { pom.version = '0.0.1-maven-SNAPSHOT' pom.groupId = 'com.baeldung.sample' pom.artifactId = 'gradle-maven-converter' } } }

L'exécution de la tâche d' installation produit maintenant le fichier POM avec les informations fournies ci-dessus:

com.baeldung.sample gradle-maven-converter 0.0.1-maven-SNAPSHOT

4.2. Répertoire et nom du POM

Parfois, nous pouvons avoir besoin que le fichier POM soit copié dans un répertoire différent et avec un nom différent . Par conséquent, ajoutons ce qui suit au bloc d' installation :

pom.writeTo("${mavenPomDir}/${project.group}/${project.name}/pom.xml")

L' attribut mavenPomDir est exposé par le plugin, qui pointera vers build / poms . Nous pouvons également donner le chemin absolu de tout répertoire dans lequel nous souhaitons copier le fichier POM.

Après avoir exécuté la tâche d' installation , nous pouvons voir le pom.xml dans build / poms / com.baeldung / gradle-to-maven .

4.3. Contenu généré automatiquement

Le plugin Maven permet également de modifier facilement l'un des éléments POM générés. Par exemple, pour rendre une dépendance facultative, nous pouvons ajouter la fermeture ci-dessous à pom.whenConfigured:

pom.whenConfigured { pom -> pom.dependencies.find {dep -> dep.groupId == 'junit' && dep.artifactId == 'junit' }.optional = true }

Cela produira l' attribut facultatif ajouté à la dépendance :

 junit junit test true 

4.4. Information additionnelle

Enfin, si nous voulons ajouter des informations supplémentaires, nous pouvons inclure n'importe quel élément pris en charge par Maven dans le générateur pom.project .

Ajoutons quelques informations de licence:

pom.project { inceptionYear '2020' licenses { license { name 'My License' url '//www.mycompany.com/licenses/license.txt' distribution 'repo' } } }

Nous pouvons maintenant voir les informations de licence ajoutées au POM:

2020   My License //www.mycompany.com/licenses/license.txt repo  

5. Conclusion

Dans ce didacticiel rapide, nous avons appris à convertir un fichier de construction Gradle en Maven POM.

Comme toujours, le code source de cet article se trouve à l'adresse over sur GitHub.