我有一个包含常用类和那些特别用于单元测试的类的库。所以我想从同一个项目中发布两个单独的工件。我使用 maven 插件的工作解决方案如下所示:
task jarTest (type: Jar, dependsOn: testClasses) {
from sourceSets.test.output
archiveBaseName.set('foo-test')
description = 'test utilities'
}
artifacts {
archives jarTest
}
uploadArchives {
repositories {
mavenDeployer {
//...
addFilter('foo') {artifact, file ->
artifact.name == 'foo'
}
addFilter('foo-test') {artifact, file ->
artifact.name == 'foo-test'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,maven 插件已被弃用,并将在 Gradle 7 中删除。 maven-publish 是建议的替代品,我正在寻找替代解决方案。
我目前的尝试看起来像
publishing {
publications {
mavenJava(MavenPublication) {
artifact jar
artifact jarTest
}
}
}
Run Code Online (Sandbox Code Playgroud)
存在两个同名工件的明显问题。
像这样设置名称不起作用:
artifactId = jar.archiveBaseName
Run Code Online (Sandbox Code Playgroud)
这既不是:
afterEvaluate {
artifactId = …Run Code Online (Sandbox Code Playgroud)