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
- poms – met 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.