Gradle Build-bestand converteren naar Maven POM

1. Inleiding

In deze zelfstudie bekijken we hoe u een Gradle-buildbestand naar een Maven POM-bestand converteert. We zullen ook enkele beschikbare aanpassingsopties onderzoeken.

2. Gradle Build-bestand

Laten we beginnen met een standaard Gradle Java-project, gradle-to-maven,met het volgende build.gradle het dossier:

repositories {mavenCentral ()} group = 'com.baeldung' version = '0.0.1-SNAPSHOT' plug-in toepassen: 'java' afhankelijkheden {compileren ('org.slf4j: slf4j-api') testCompile ('junit: junit') }

3. Maven-plug-in

Gradle wordt geleverd met een Maven-plug-in, die ondersteuning toevoegt om een ​​Gradle-bestand naar een Maven POM-bestand te converteren. Het kan ook artefacten implementeren in Maven-opslagplaatsen.

Om dit te gebruiken, voegen we de Maven-plug-in toe aan ons build.gradle het dossier:

plug-in toepassen: 'maven'

De plug-in gebruikt de groep en de versie aanwezig in het Gradle-bestand en voegt ze toe aan het POM-bestand. Het neemt ook automatisch de artefact-id van de directorynaam.

De plug-in voegt automatisch het installeren taak ook. Dus om te converteren, laten we het volgende uitvoeren:

gradle installeren

Als u de bovenstaande opdracht uitvoert, wordt een bouwen directory met drie submappen:

  • libs - met de pot met de naam $ {artifactId} - $ {version} .jar
  • pomsmet het geconverteerde POM-bestand met de naam pom-default.xml
  • tmp / pot - met het manifest

Het gegenereerde POM-bestand ziet er als volgt uit:

  4.0.0 com.baeldung gradle-to-maven 0.0.1-SNAPSHOT org.slf4j slf4j-api Junit Junit-test compileren 

De installeren task uploadt ook het gegenereerde POM-bestand en de JAR naar de lokale Maven-repository.

4. De Maven-plug-in aanpassen

In sommige gevallen kan het handig zijn om de projectinformatie in het gegenereerde POM-bestand aan te passen. Laten we kijken.

4.1. groupId,artefact-id, en versie

Het wijzigen van het groupId, artefact-id en de versie van de POM kan worden afgehandeld in de installeren blok:

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

Het uitvoeren van het installeren task produceert nu het POM-bestand met de bovenstaande informatie:

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

4.2. Directory en naam van de POM

Soms, we kunnen het POM-bestand nodig hebben om naar een andere map en met een andere naam te worden gekopieerd. Laten we daarom het volgende toevoegen aan het installeren blok:

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

De mavenPomDir attribuut wordt weergegeven door de plug-in, die zal verwijzen naar build / poms. We kunnen ook het absolute pad opgeven van elke map waarnaar we het POM-bestand willen kopiëren.

Na het uitvoeren van het installeren taak, kunnen we de pom.xml binnen build / poms / com.baeldung / gradle-to-maven.

4.3. Automatisch gegenereerde inhoud

De Maven-plug-in maakt het ook eenvoudig om een ​​van de gegenereerde POM-elementen te wijzigen. Om bijvoorbeeld een afhankelijkheid optioneel te maken, kunnen we de onderstaande afsluiting toevoegen aan pom.whenGeconfigureerd:

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

Dit zal het optioneel attribuut toegevoegd aan het afhankelijkheid:

 junit junit-test waar 

4.4. Extra informatie

Als we tot slot aanvullende informatie willen toevoegen, we kunnen elk door Maven ondersteund element opnemen in het pom.project bouwer.

Laten we wat licentie-informatie toevoegen:

pom.project {inceptionYear '2020' licenties {licentie {naam 'Mijn licentie' url '//www.mijnbedrijf.com/licenses/license.txt' distributie 'repo'}}}

We kunnen nu licentie-informatie zien die is toegevoegd aan de POM:

2020 Mijn licentie //www.mijnbedrijf.com/licenses/license.txt repo 

5. Conclusie

In deze korte tutorial hebben we geleerd hoe we een Gradle-buildbestand naar Maven POM kunnen converteren.

Zoals altijd is de broncode van dit artikel te vinden op GitHub.


$config[zx-auto] not found$config[zx-overlay] not found