Conversione del file di build Gradle in Maven POM

1. Introduzione

In questo tutorial, daremo un'occhiata a come convertire un file di build Gradle in un file POM Maven. Esploreremo anche alcune opzioni di personalizzazione disponibili.

2. Gradle Build File

Cominciamo con un progetto Java Gradle standard, gradle-to-maven ,con il seguente file build.gradle :

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

3. Plugin Maven

Gradle viene fornito con un plug-in Maven, che aggiunge il supporto per convertire un file Gradle in un file POM Maven. Può anche distribuire artefatti ai repository Maven.

Per usarlo, aggiungiamo il plugin Maven al nostro file build.gradle :

apply plugin: 'maven'

Il plugin utilizza il gruppo e la versione presenti nel file Gradle e li aggiunge al file POM. Inoltre, prende automaticamente artifactId dal nome della directory.

Il plugin aggiunge automaticamente anche l' attività di installazione . Quindi, per convertire, eseguiamo quanto segue:

gradle install

L'esecuzione del comando precedente crea una directory di build con tre sottodirectory:

  • libs - contenente il jar con il nome $ {artifactId} - $ {version} .jar
  • poms - contenente il file POM convertito con il nome pom-default.xml
  • tmp / jar - contenente il manifest

Il file POM generato sarà simile a questo:

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

L' attività di installazione carica anche il file POM generato e il JAR nel repository Maven locale.

4. Personalizzare il plugin Maven

In alcuni casi, può essere utile personalizzare le informazioni sul progetto nel file POM generato. Diamo un'occhiata.

4.1. groupId, artifactId e version

La modifica di groupId , artifactId e la versione di POM possono essere gestite nel blocco di installazione :

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

L'esecuzione dell'attività di installazione ora produce il file POM con le informazioni fornite sopra:

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

4.2. Directory e nome del POM

A volte, potrebbe essere necessario copiare il file POM in una directory diversa e con un nome diverso . Pertanto, aggiungiamo quanto segue al blocco di installazione :

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

L' attributo mavenPomDir è esposto dal plugin, che punterà a build / poms . Possiamo anche fornire il percorso assoluto di qualsiasi directory in cui desideriamo copiare il file POM.

Dopo aver eseguito l' attività di installazione , possiamo vedere il pom.xml all'interno di build / poms / com.baeldung / gradle-to-maven .

4.3. Contenuti generati automaticamente

Il plug-in Maven semplifica anche la modifica di qualsiasi elemento POM generato. Ad esempio, per rendere facoltativa una dipendenza, possiamo aggiungere la chiusura seguente a pom.whenConfigured:

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

Questo produrrà l' attributo opzionale aggiunto alla dipendenza :

 junit junit test true 

4.4. Informazioni aggiuntive

Infine, se vogliamo aggiungere ulteriori informazioni, possiamo includere qualsiasi elemento supportato da Maven al builder pom.project .

Aggiungiamo alcune informazioni sulla licenza:

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

Ora possiamo vedere le informazioni sulla licenza aggiunte al POM:

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

5. conclusione

In questo rapido tutorial, abbiamo imparato come convertire un file di build Gradle in Maven POM.

Come sempre, il codice sorgente di questo articolo può essere trovato su GitHub.