使用gradle将Zip文件上传到nexus

时间:2018-04-13 19:08:12

标签: spring-boot gradle

我有一个SpringBoot应用程序,作为构建的一部分,我想将生成的fat jar和我的源代码中的一些目录conf.sh压缩在一起。然后将该zip文件上传到nexus。我无法做到这一点。

以下是我在build.gradle中的任务

task myzip(type: Zip) {
    doFirst {
        new File(buildDir, 'logs').mkdirs()
    }
    def fileName = "${jar.baseName}-${jar.version}"
    from projectDir into 'manager-service'
    include "conf/*"
    include "*.sh"
    exclude "conf/config-client"
    from buildDir into 'manager-service'
    include "logs/*"
    from file("$buildDir/libs")
    include "${fileName}.jar"
    archiveName "manager-service.zip"
}

myzip.dependsOn(bootRepackage)

artifacts {archives myzip}
build.dependsOn(myzip)

uploadArchives {
    repositories {
        apply plugin: 'maven'
        mavenDeployer {
            repository(url: System.getenv("NEXUSREPO")) {
                String username = System.getenv("NEXUS_SNAPSHOT_REPO_USERNAME");
                String password = System.getenv("NEXUS_SNAPSHOT_REPO_PASSWORD");
                print "foo"
                authentication(userName: username.toString(), password: password)
            }
        }
    }
}

但是当我运行构建时,它失败并出现以下错误:

Circular dependency between the following tasks:
:bootRepackage
\--- :myzip
     \--- :bootRepackage (*)

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

使用myzip.dependsOn(bootRepackage)您的任务“myZip”取决于任务“bootRepackage”,它在内部取决于gradle任务“assemble”和“build”。这意味着“myZip”要求在您调用“myZip”时首先执行“build”,“assemble”和“bootRepackage”。

build.dependsOn(myzip)意味着您将执行“build”依赖于“myZip”来执行“build”。这会创建一个循环。

要解决此问题,请从build.gradle文件中删除build.dependsOn(myzip)