0

我有一个由非 Java 项目组成的多项目 gradle(2.1 版!!)构建。

我想将生成的工件(.tar.gz 文件)部署到 Nexus 以及目录。

目前,我在块的根中定义存储库,build.gradle并再次为根文件中的块repositories中的每个子项目定义存储库。repositoriessubprojectsbuild.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时,任务成功,但没有任何内容上传到任何地方,并且从输出看起来该uploadArchives任务仅针对未应用 maven-plugin 的子项目执行。

这样做的正确方法是什么?我应该在何时/何地应用哪些插件?

4

1 回答 1

0

显然这里有两个不相关的“工作问题”。

问题 1):我无法发布到 Nexus 并收到Failed to retrieve remote metadata-error:

答案 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"
}
于 2017-10-06T10:07:15.380 回答