Преобразуване на Gradle Build файл в Maven POM

1. Въведение

В този урок ще разгледаме как да конвертираме файл за изграждане на Gradle в файл на Maven POM. Ще проучим и няколко налични опции за персонализиране.

2. Файл за изграждане на Gradle

Нека започнем със стандартен проект Gradle Java, gradle-to-maven ,със следния файл 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. Приставка Maven

Gradle се доставя с приставка Maven, която добавя поддръжка за конвертиране на файл Gradle в POM файл Maven. Той може също да разположи артефакти в хранилищата на Maven.

За да използваме това, нека добавим приставката Maven към нашия файл build.gradle :

apply plugin: 'maven'

Приставката използва групата и версията, налични във файла Gradle, и ги добавя към POM файла. Също така, той автоматично взема артефакта от името на директорията.

Приставката автоматично добавя и задачата за инсталиране . Така че, за да конвертирате, нека изпълним следното:

gradle install

Изпълнението на горната команда създава директория за изграждане с три поддиректории:

  • libs - съдържа буркана с името $ {artifactId} - $ {version} .jar
  • poms - съдържа преобразувания POM файл с името pom-default.xml
  • tmp / jar - съдържа манифеста

Генерираният POM файл ще изглежда така:

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

Задачата за инсталиране също така качва генерирания POM файл и JAR в локалното хранилище на Maven.

4. Персонализиране на приставката Maven

В някои случаи може да е полезно да персонализирате информацията за проекта в генерирания POM файл. Нека да разгледаме.

4.1. groupId, artifactId, и версия

Промяната на groupId , artifactId и версията на POM може да се обработва в инсталационния блок:

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

Изпълнението на задачата за инсталиране сега създава POM файла с информацията, предоставена по-горе:

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

4.2. Директория и име на POM

Понякога може да се наложи POM файлът да бъде копиран в друга директория и с друго име . Затова нека добавим следното към инсталационния блок:

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

В mavenPomDir атрибут е изложена от приставката, която ще насочва към изграждане / помераните . Също така можем да дадем абсолютния път на всяка директория, в която искаме да копираме POM файла.

След стартиране на инсталационната задача можем да видим pom.xml вътре в build / poms / com.baeldung / gradle-to-maven .

4.3. Автоматично генерирано съдържание

Приставката Maven също улеснява промяната на който и да е от генерираните POM елементи. Например, за да направим зависимостта незадължителна, можем да добавим затварянето по-долу към pom.whenConfigured:

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

Това ще създаде незадължителен атрибут, добавен към зависимостта :

 junit junit test true 

4.4. Допълнителна информация

И накрая, ако искаме да добавим допълнителна информация, можем да включим всеки поддържан от Maven елемент към конструктора на pom.project .

Нека добавим малко информация за лиценза:

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

Вече можем да видим информация за лиценза, добавена към POM:

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

5. Заключение

В този бърз урок научихме как да конвертираме файл за изграждане на Gradle в Maven POM.

Както винаги, изходният код от тази статия може да бъде намерен в GitHub.