Konvertering av Gradle Build-fil til Maven POM

1. Introduksjon

I denne opplæringen tar vi en titt på hvordan du konverterer en Gradle build-fil til en Maven POM-fil. Vi vil også utforske noen få tilgjengelige tilpasningsalternativer.

2. Gradle Build-fil

La oss starte med et standard Gradle Java-prosjekt, grad-til-maven,med følgende build.gradle fil:

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

3. Maven-plugin

Gradle leveres med et Maven-plugin, som legger til støtte for å konvertere en Gradle-fil til en Maven POM-fil. Det kan også distribuere gjenstander til Maven-arkiver.

For å bruke dette, la oss legge til Maven-pluginet til vårt build.gradle fil:

bruk plugin: 'maven'

Plugin bruker gruppe og versjon til stede i Gradle-filen og legger dem til POM-filen. Det tar også automatisk artefaktId fra katalognavnet.

Plugin legger automatisk til installere oppgave også. Så for å konvertere, la oss kjøre følgende:

gradere installere

Å kjøre kommandoen ovenfor skaper en bygge katalog med tre underkataloger:

  • libs - inneholder krukken med navnet $ {artifactId} - $ {versjon} .jar
  • pomsinneholder den konverterte POM-filen med navnet pom-default.xml
  • tmp / jar - inneholder manifestet

Den genererte POM-filen vil se slik ut:

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

De installere oppgave laster også opp den genererte POM-filen og JAR til det lokale Maven-arkivet.

4. Tilpasse Maven-plugin

I noen tilfeller kan det være nyttig å tilpasse prosjektinformasjonen i den genererte POM-filen. La oss ta en titt.

4.1. groupId,artefaktId, og versjon

Endring av groupId, artefaktId og versjon av POM kan håndteres i installere blokkere:

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

Kjører installere oppgave produserer nå POM-filen med informasjonen gitt ovenfor:

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

4.2. Katalog og navn på POM

Noen ganger, Vi trenger kanskje POM-filen for å bli kopiert til en annen katalog og med et annet navn. La oss derfor legge til følgende i installere blokkere:

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

De mavenPomDir attributt blir eksponert av pluginet, som vil peke på bygge / poms. Vi kan også gi den absolutte banen til hvilken som helst katalog vi ønsker å kopiere POM-filen til.

Etter å ha kjørt installere oppgave, kan vi se pom.xml innsiden build / poms / com.baeldung / gradle-to-maven.

4.3. Auto-generert innhold

Maven-pluginet gjør det også enkelt å endre noen av de genererte POM-elementene. For eksempel, for å gjøre en avhengighet valgfri, kan vi legge til nedleggelsen nedenfor pom.whenConfigured:

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

Dette vil produsere valgfri attributt lagt til avhengighet:

 junit junit test sant 

4.4. Tilleggsinformasjon

Til slutt, hvis vi vil legge til ytterligere informasjon, vi kan inkludere ethvert Maven-støttet element i pom.project bygger.

La oss legge til litt lisensinformasjon:

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

Vi kan nå se lisensinformasjon lagt til POM:

2020 Min lisens //www.mycompany.com/licenses/license.txt repo 

5. Konklusjon

I denne raske opplæringen lærte vi hvordan vi konverterer en Gradle-byggfil til Maven POM.

Som alltid kan kildekoden fra denne artikkelen finnes på GitHub.