Gradle 新的 maven-publish 插件:
对于具有不同分类器的多个罐子,例如,
源集
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 具有编译依赖性。
摇篮:
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 文件没有依赖关系。