Gradle新的maven-publish插件:
对于具有不同分类器的多个JAR文件,例如:
源集
src/foo/java
src/bar/java
dependencies {
fooCompile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
barCompile sourceSets.foo.output
}
需要构建的Jars:
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
只有一个POM文件,没有任何依赖。
现在将其分离为不同的artifactId(s)。
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"
}
}
}
}
每个 Jar 都有自己的 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名称后面。
- 为foo和bar生成的POM.xml文件没有依赖关系。