我正在开发spring boot微服务。
然后我生成了一个服务模板并添加了一个gradle包装器。
然后我有一个带有gradle任务的独立bootstrap项目,复制模板以生成一个新项目
但是如果我复制模板,那么gradle包装器就会出现错误。
task create(type: Copy) {
def parentFolder = "../"
def templateFolder = new File("$parentFolder/fmp-template")
def serviceName = project.hasProperty('sn') ? "${sn}" : "dummy"
def fmpServiceName = "fmp-${sn}"
def newServiceFolder = new File("$parentFolder/${fmpServiceName}")
def serviceNameReplaced = ""
if ("${serviceName}".contains('-')) {
serviceNameReplaced = "${serviceName}".replaceAll('-','')
}
else {
serviceNameReplaced = serviceName
}
def servicePort = project.hasProperty('sp') ? sp : '9999'
def maintainerName = "${defaultMaintainerName1}${defaultMaintainerName2}"
def maintainerMail = "${defaultMaintainerMail}"
maintainerName = getMaintainerName()
maintainerMail = getMaintainerMail()
// replace tokens in files
filter ReplaceTokens, tokens: [
'serviceName' : serviceName.toString(),
'serviceNameReplaced' : serviceNameReplaced.toString(),
'servicePort' : servicePort.toString(),
'maintainerName' : maintainerName,
'maintainerMail' : maintainerMail,
]
// copy template to new service
from templateFolder
into newServiceFolder
// workaround because Copy Task is excluding some files
doFirst {
DirectoryScanner.defaultExcludes.each { DirectoryScanner.removeDefaultExclude it }
}
doLast {
DirectoryScanner.resetDefaultExcludes()
renameFolder("$parentFolder/${fmpServiceName}/src/main/java/de/microservices/fmp/@serviceNameReplaced@",
"$parentFolder/${fmpServiceName}/src/main/java/de/microservices/fmp/${serviceNameReplaced}")
renameFolder("$parentFolder/${fmpServiceName}/src/test/java/de/microservices/fmp/@serviceNameReplaced@",
"$parentFolder/${fmpServiceName}/src/test/java/de/microservices/fmp/${serviceNameReplaced}")
commandGitInit(newServiceFolder)
}
}
我认为这是因为我将项目从“模板”重命名为“xyz”
这是我复制后的目录内容:
的.gitignore
.gradle
README.md
的build.gradle
gradle这个
gradle.properties
gradlew
gradlew.bat
SRC
我的gradle任务是复制模板:
{{1}}
我的问题:
是否可以使用gradle任务复制gradle包装器 - 以及如何?
谢谢。
答案 0 :(得分:0)
同时复制gradle
目录,而不仅仅是gradlew
脚本。
修改强>:
看到你的编辑后,我认为复制包装器没有任何意义,因为为了做到这一点,你使用的是Gradle任务,这需要一个本地的Gradle安装。只需运行gradle wrapper
。
提示:下次发布问题时,请勿阻止有用的信息。
答案 1 :(得分:0)
对不起第一次"错误"题。但我认为这是一种已知行为,有人有解决方案。
实际上问题是:gradle中的复制任务有复制问题" zip / jar - files"
经过长时间的研究,我现在有一个解决方案:
1.我在主要复制任务中排除了jar文件
我创建了一个新的复制任务,我只复制了jar文件
task copyGradleWrapper(type: Copy) {
// copy gradle wrapper separately because of "unzipping problems"
def templateWrapper = new File("../fmp-template/gradle/wrapper/gradle-wrapper.jar")
def newServiceWrapper = new File("${newServiceFolder}/gradle/wrapper/gradle-wrapper.jar")
from zipTree(templateWrapper)
into newServiceWrapper
}
希望我的解决方案答案比我的问题更好;)