我似乎无法使用与uploadArchives
不同的单独上传任务将第二组jar发布到本地maven仓库。这是我的设置:
uploadArchives {
repositories {
mavenDeployer {
repository(url: project.releaseRepoUrl)
snapshotRepository(url: project.snapshotRepoUrl)
}
}
}
task sourcesJar(type: Jar){ ... }
artifacts{
archives sourcesJar
}
以上工作符合预期。然后我还有一个configuration
configurations{
guiceArchives
}
task guiceJar(type: Jar){ ... }
task guiceSourcesJar(type: Jar){ ... }
artifacts{
guiceArchives guiceJar
guiceArchives guiceSourcesJar
//archives guiceJar
//archives guiceSourcesJar
}
执行gradle uploadArchives
正常,但gradle uploadGuiceArchives
无效:
:core:guiceClasses UP-TO-DATE
:core:guiceJar UP-TO-DATE
:core:guiceSourcesJar UP-TO-DATE
:core:jar UP-TO-DATE
:core:sourcesJar UP-TO-DATE
:core:uploadArchives
BUILD FINISHED
单个guiceJar
和guiceSourcesJar
任务本身可以正常工作,打印出guiceArchives
配置的内容也会发现jars被正确地包含为工件。
我尝试暂时将guiceJar
和guiceSourcesJar
分配给archives
配置,这让它抱怨说:
A POM cannot have multiple artifacts with the same type and classifier.
这正是manual says。所以我认为这是造成问题的原因造成的神器冲突。
所以我按照手册的建议使用addFilter
修正了它,但效果很好但仅在guiceJar
和guiceSourcesJar
分配给archives
时才有效。当我将它们分配回guiceArchives
并尝试gradle uploadGuiceArchives
时,它仍然无效。
是否无法上传具有不同上传任务的多个工件?
解决方案:
以下是@Peter Niederwieser提供的解决方案的更新。
只需添加:
uploadGuiceArchives {
repositories {
mavenDeployer {
repository(url: project.releaseRepoUrl)
snapshotRepository(url: project.snapshotRepoUrl)
}
}
}
注意:不需要addFilter
。
谢谢!
EDIT2:
为了完整性,project.releaseRepoUrl
和project.snapshotRepoUrl
设置为本地maven存储库,如下所示:
project.ext{
releaseRepoUrl = "file://${project(':').projectDir}/../mvn-repo/releases"
snapshotRepoUrl = "file://${project(':').projectDir}/../mvn-repo/snapshots"
}
答案 0 :(得分:2)
可能是因为您没有像uploadGuiceArchives
那样为uploadArchives
定义存储库吗?