我正在尝试通过 Gradle 将我们项目中的 RPM 工件发布到 Nexus 上的 Yum Repo:
publishing {
repositories {
ivy {
url 'http://myrepo:8081/repository/myproject'
credentials {
username "aaa"
password "xxx"
}
layout "pattern", {
artifact "${buildRpm.outputs.getFiles().getSingleFile().getName()}"
}
}
publications {
rpm(IvyPublication) {
artifact buildRpm.outputs.getFiles().getSingleFile()
}
}
}
}
当我运行./gradlew publish
此任务时,会启动并开始上传 90MB 的主要 .rpm 工件。然后它在此之后失败并出现以下错误:
> Task :search:publishRpmPublicationToIvyRepository FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':search:publishRpmPublicationToIvyRepository'.
> Failed to publish publication 'rpm' to repository 'ivy'
> Could not write to resource 'http://myrepo/repository/myproject/myproject-1.23.4.noarch.rpm.sha1'.
> Could not PUT 'http://myrepo/repository/myproject/myproject-1.23.4.noarch.rpm.sha1'. Received status code 400 from server: Invalid path for a Yum repository
如何防止 .sha1 文件被上传?我只希望上传 RPM(这显然是这个 repo 中唯一允许的东西)。
我也尝试过使用maven-publish
而不是,ivy-publish
但两者都给出了类似的问题。maven-publish
尝试上传类似失败的 .pom。
我可以使用 curl 手动上传 RPM,但我更愿意使用 Gradle 插件和标准。