Konvertieren der Gradle Build-Datei in Maven POM

1. Einleitung

In diesem Tutorial sehen wir uns an, wie eine Gradle-Build-Datei in eine Maven-POM-Datei konvertiert wird. Wir werden auch einige verfügbare Anpassungsoptionen untersuchen.

2. Gradle Build-Datei

Beginnen wir mit einem Standard-Gradle-Java-Projekt, Gradle-to-Maven ,mit der folgenden build.gradle- Datei:

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

3. Maven Plugin

Gradle wird mit einem Maven-Plugin geliefert, das die Konvertierung einer Gradle-Datei in eine Maven-POM-Datei unterstützt. Es kann auch Artefakte in Maven-Repositorys bereitstellen.

Um dies zu verwenden, fügen wir das Maven-Plugin zu unserer build.gradle- Datei hinzu:

apply plugin: 'maven'

Das Plugin verwendet die Gruppe und die in der Gradle-Datei vorhandene Version und fügt sie der POM-Datei hinzu. Außerdem wird die Artefakt-ID automatisch aus dem Verzeichnisnamen übernommen.

Das Plugin fügt automatisch auch die Installationsaufgabe hinzu . Führen Sie zum Konvertieren Folgendes aus:

gradle install

Durch Ausführen des obigen Befehls wird ein Erstellungsverzeichnis mit drei Unterverzeichnissen erstellt:

  • libs - enthält das Glas mit dem Namen $ {arifactId} - $ {version} .jar
  • poms - enthält die konvertierte POM-Datei mit dem Namen pom-default.xml
  • tmp / jar - enthält das Manifest

Die generierte POM-Datei sieht folgendermaßen aus:

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

Die Installationsaufgabe lädt auch die generierte POM-Datei und die JAR in das lokale Maven-Repository hoch.

4. Anpassen des Maven Plugins

In einigen Fällen kann es hilfreich sein, die Projektinformationen in der generierten POM-Datei anzupassen. Lass uns einen Blick darauf werfen.

4.1. Gruppen-ID, Artefakt- ID und Version

Das Ändern der Gruppen-ID , der Artefakt- ID und der Version des POM kann im Installationsblock behandelt werden :

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

Durch Ausführen der Installationsaufgabe wird nun die POM-Datei mit den oben angegebenen Informationen erstellt:

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

4.2. Verzeichnis und Name des POM

Manchmal muss die POM-Datei in ein anderes Verzeichnis und mit einem anderen Namen kopiert werden . Fügen wir daher dem Installationsblock Folgendes hinzu :

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

Das mavenPomDir- Attribut wird vom Plugin verfügbar gemacht , das auf build / poms verweist . Wir können auch den absoluten Pfad jedes Verzeichnisses angeben, in das wir die POM-Datei kopieren möchten.

Nach dem Ausführen der Installationsaufgabe sehen wir die Datei pom.xml in build / poms / com.baeldung / gradle-to-maven .

4.3. Automatisch generierter Inhalt

Das Maven-Plugin macht es auch einfach, eines der generierten POM-Elemente zu ändern. Um beispielsweise eine Abhängigkeit optional zu machen, können wir pom.whenConfigured den folgenden Abschluss hinzufügen:

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

Dadurch wird das optionale Attribut erzeugt, das der Abhängigkeit hinzugefügt wird :

 junit junit test true 

4.4. zusätzliche Information

Wenn wir zusätzliche Informationen hinzufügen möchten, können wir dem Builder pom.project jedes von Maven unterstützte Element hinzufügen .

Fügen wir einige Lizenzinformationen hinzu:

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

Wir können jetzt Lizenzinformationen sehen, die dem POM hinzugefügt wurden:

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

5. Schlussfolgerung

In diesem kurzen Tutorial haben wir gelernt, wie man eine Gradle-Build-Datei in Maven POM konvertiert.

Wie immer ist der Quellcode dieses Artikels auf GitHub zu finden.