是否可以使用gradle任务复制gradle包装器?

时间:2018-03-17 20:42:38

标签: gradle gradlew

我正在开发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包装器 - 以及如何?

谢谢。

2 个答案:

答案 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
}

希望我的解决方案答案比我的问题更好;)