【问题标题】:Gradle Nexus and FlatDir deployment without java-, ear- or war-pluginGradle Nexus 和 FlatDir 部署,无需 java-、ear- 或 war-plugin
【发布时间】:2017-10-03 21:42:03
【问题描述】:

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

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

目前,我在 repositories 块中的根 build.gradle 中定义存储库,并在根 build.gradle 文件中的 subprojects 内的 repositories 块中再次为每个子项目定义存储库。

我将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 的子项目执行。

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

【问题讨论】:

  • 什么不起作用?什么是错误/正在运行 gradle 的输出?

标签: gradle build.gradle maven-deploy-plugin maven-publish


【解决方案1】:

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

问题 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"
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 2011-05-09
    相关资源
    最近更新 更多