Новый плагин maven-publish для Gradle:
Для нескольких банок с разными классификаторами, например,
исходные наборы
src/foo/java
src/bar/java
dependencies {
fooCompile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
barCompile sourceSets.foo.output
}
Банки для сборки:
productName-1.0-foo.jar
productName-1.0-bar.jar
bar.jar имеет зависимость компиляции от foo jar.
Gradle:
publishing {
publications {
mavenJava(MavenPublication) {
groupId 'com.example'
artifactId 'productName'
version '1.0'
artifact fooJar {
classifier 'foo'
}
artifact barJar {
classifier 'bar'
}
}
}
publishing {
repositories {
maven {
url "$buildDir/repo"
}
}
}
}
Опубликованный репозиторий:
build/repo/com/example/productName/1.0/productName-1.0-foo.jar
build/repo/com/example/productName/1.0/productName-1.0-bar.jar
build/repo/com/example/productName/1.0/productName-1.0.pom
Только один помп без каких-либо зависимостей.
Теперь разделите их разными идентификаторами артефактов.
publishing {
publications {
foo(MavenPublication) {
groupId 'com.example'
artifactId 'productName-foo'
version '1.0'
artifact fooJar {
}
}
bar(MavenPublication) {
groupId 'com.example'
artifactId 'productName-bar'
version '1.0'
artifact barJar {
}
}
}
publishing {
repositories {
maven {
url "$buildDir/repo"
}
}
}
}
Каждой банке соответствует свой POM:
build/repo/com/example/productName-foo/1.0/productName-foo-1.0.jar
build/repo/com/example/productName-foo/1.0/productName-foo-1.0.pom
build/repo/com/example/productName-bar/1.0/productName-bar-1.0.jar
build/repo/com/example/productName-bar/1.0/productName-bar-1.0.pom
Две проблемы:
- классификатор (foo, bar) не стоит после версии в имени jar.
- сгенерированные файлы POM.xml для foo и bar не имеют зависимости.