【发布时间】:2017-10-03 21:42:03
【问题描述】:
我有一个由非 java 项目组成的多项目 gradle(2.1 版!!)构建。
我想将生成的工件(.tar.gz 文件)部署到 Nexus 和目录。
目前,我在 repositories 块中的根 build.gradle 中定义存储库,并在根 build.gradle 文件中的 subprojects 内的 repositories 块中再次为每个子项目定义存储库。
我将base 插件应用于根项目,将maven-publish 插件应用于所有需要部署工件的子项目。
我尝试按照此处的说明进行操作:
- https://docs.gradle.org/2.1/userguide/publishing_maven.html
- https://docs.gradle.org/2.1/dsl/org.gradle.api.publish.maven.MavenPublication.html
- https://discuss.gradle.org/t/how-to-have-multiple-uploadarchives/19381/3
- How can I make uploadArchives dependent on another task?
- 还有更多...
但没有任何效果。 :-(
这是我的工作:
...
# apply the maven-publish plugin only to sub-projects that produce artifacts that should be uploaded.
apply plugin: 'maven-publish'
publishing {
publications {
tarFiles (MavenPublication) {
artifact compressTar
}
}
repositories {
add rootProject.repositories.fsShare
add rootProject.repositories.nexusDeploy
}
}
...
compressTar 是我的自定义 Tar 任务,用于创建我要上传的工件。
当我执行./gradlew publishTarFilesPublicationToNexusDeployRepository 时出现以下错误:
Execution failed for task ':mySubProject:publishTarFilesPublicationToNexusDeployRepository'.
> Failed to publish publication 'tarFiles' to repository 'nexusDeploy'
> Failed to retrieve remote metadata myRootProject:mySubProject:0.0.0.0-SNAPSHOT/maven-metadata.xml: Could not transfer metadata myRootProject:mySubProject:0.0.0.0-SNAPSHOT/maven-metadata.xml from/to remote (https://myProject.nexus.url:443/nexus3/repository/builds/): Could not get resource 'myRootProject/mySubProject/0.0.0.0-SNAPSHOT/maven-metadata.xml'
当我执行uploadArchives 时,任务成功,但没有任何内容上传到任何地方,从输出看来uploadArchives 任务仅针对未应用 maven-plugin 的子项目执行。
这样做的正确方法是什么?我应该在何时/何地应用哪些插件?
【问题讨论】:
-
什么不起作用?什么是错误/正在运行 gradle 的输出?
标签: gradle build.gradle maven-deploy-plugin maven-publish