我有一个由非 Java 项目组成的多项目 gradle(2.1 版!!)构建。
我想将生成的工件(.tar.gz 文件)部署到 Nexus 以及目录。
目前,我在块的根中定义存储库,build.gradle
并再次为根文件中的块repositories
中的每个子项目定义存储库。repositories
subprojects
build.gradle
我将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
- 如何使 uploadArchives 依赖于另一个任务?
- 还有一些……
但没有任何效果。:-(
这就是我所做的:
...
# 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 的子项目执行。
这样做的正确方法是什么?我应该在何时/何地应用哪些插件?