【问题标题】:Deploy gradle project to nexus via bamboo通过竹子将 gradle 项目部署到 nexus
【发布时间】:2018-06-03 00:46:28
【问题描述】:

我有一个带有 gradle 的 java 项目,我使用 Bamboo 作为我的 CI/CD。 我的构建计划制作了 jar,而我的部署计划(假设)将 jar 部署到了 nexus。我的构建工作完美,并创建了工件(jar、build.gradle 文件、gradle.properties 文件和gradle.settings 文件)。

当我想运行我的部署计划时,我在竹子中运行uploadArchives 命令。此命令还使 jar 命令运行,这会破坏我的 jar(使其变为 261 字节)。我找到的解决方案只是告诉gradle跳过jar命令(使用-x jar),但我觉得有更好的解决方案。

gralde 中是否有特殊命令可以使其工作?或者有没有办法告诉 gradle 在没有前面命令的情况下运行特定命令?也许像 maven 命令上传 3rd 方库?到处找了也没找到。

谢谢!

【问题讨论】:

    标签: gradle build.gradle nexus bamboo gradlew


    【解决方案1】:

    这就是 Gradle 的工作方式,它取决于您如何配置构建。但一般来说,您可以创建一个仅发布文件的任务(它不依赖于任何东西)。您需要使用 maven-publish 插件。例如。让我们考虑以下配置

    apply plugin: 'maven-publish'
    
    group= "gradle-test"
    version = "1.0-SNAPSHOT"
    task produce {
      ext {
        outputFile = file("$buildDir/file.txt")
      }
      outputs.file  outputFile
      doLast {
        outputFile  << "Hello World!"
      }
    }
    
    task zipGreeting(type: Zip) {
        from produce.outputs
    }
    
    publishing {
        publications {
            newGreeting(MavenPublication) {
                artifact zipGreeting
            }
            oldGreeting(MavenPublication) {
                artifact {
                  produce.outputFile
                }
            }
        }
    }
    

    使用以下配置任务publishNewGreetingPublicationToMavenLocal 依赖于zipGreetingproduce(因为它依赖于produce 的输出)所以最后Gradle 将调用它们如果它们的输出不是最新的(我假设这发生在您的 jar 任务中 -> Gradle 最新检查取决于本地 .gradle 缓存目录)

    但是publishOldGreetingPublicationToMavenLocal 对任何其他任务没有明确的依赖关系,所以如果你调用gradle publishOldGreetingPublicationToMavenLocal。 Gradle 将尝试找到提到的文件并将其上传到 Maven Local。显然,如果文件不存在,它将失败。

    【讨论】:

    • 所以你说我应该将artifact指定为build文件夹中的jar文件?在那种情况下,gradle 不会运行“jar”任务?您知道什么是最佳做法吗?
    • 这通常取决于您想要实现的目标。你还没有写出为什么你的 jar 被部署计划破坏了我可以看到在部署阶段不应该重建工件,因此 Gradle 应该使用构建计划中的工件。但是那些在不同的代理上运行,Gradle 不知道你的 jar 是最新的。两者(我的和你的解决方案)可能都可以正常工作。但是,在我看来,我的意图很明确,“是的,我希望这个文件被上传”。在您的情况下,只需执行此任务,但忽略它所具有的任何依赖项并假设一切都已经存在“
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-11
    • 2019-12-26
    相关资源
    最近更新 更多