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.