我有一个包含非java项目的多项目gradle(版本2.1 !!)版本。
我想将生成的工件(.tar.gz文件)部署到Nexus以及目录。
目前,我在visit
块中的根build.gradle
中定义了存储库,并且还为根中repositories
内的repositories
块中的每个子项目定义了存储库subprojects
档案。
我将build.gradle
插件应用于根项目,将base
插件应用于所有要部署工件的子项目。
我试着按照这里的说明操作:
但没有任何效果。 : - (
这就是我的所作所为:
maven-publish
...
# 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
任务只对未获得maven的子项目执行 - 适用插件。
这样做的正确方法是什么?我应该在/何时申请哪些插件?
答案 0 :(得分:0)
显然,这里有两个不相关的“工作中的问题”。
问题1):我无法发布到Nexus并获得Failed to retrieve remote metadata
- 错误:
答案1):我试图将“SNAPSHOT”发布到已配置为不接受“SNAPSHOT”构建的存储库。将构建版本从1.2.3.4-SNAPSHOT重命名为其他任何东西(例如1.2.3.4-SNAPSHOT-dev
或更合理的1.2.3.build4`)都可以正常工作。
问题2)发布到'flatDir'存储库不起作用。 maven-publish插件没有为它创建发布任务。
答案2)要使用maven-publish发布到目录,flatDir
显然不被识别为maven-publish插件可以发布到的存储库。如下定义'目录'存储库工作正常:
maven {
name "fsShare"
url "/share/pkg"
}