我有一个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 (*)
我该如何解决这个问题?
答案 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)
。