Gradle 将自定义任务的执行限制为bootBuildImage的执行

Gradle 将自定义任务的执行限制为bootBuildImage的执行,gradle,intellij-idea,Gradle,Intellij Idea,我已经厌倦了手动增加我在项目中构建的docker映像的版本号。因此,我写了一个小脚本,它为我完成了这个任务,它看起来是这样的: group = 'XXXXXXXXX' version = '1.0.1' sourceCompatibility = '1.8' task incrementVersion { def v = version String minor=v.substring(v.lastIndexOf('.')+1) //get last digit int

我已经厌倦了手动增加我在项目中构建的docker映像的版本号。因此,我写了一个小脚本,它为我完成了这个任务,它看起来是这样的:

group = 'XXXXXXXXX'
version = '1.0.1'
sourceCompatibility = '1.8'

task incrementVersion {
    def v = version
    String minor=v.substring(v.lastIndexOf('.')+1) //get last digit
    int m=minor.toInteger()+1                      //increment
    String major=v.substring(0,v.lastIndexOf("."))       //get the beginning
    String s=buildFile.getText().replaceFirst("version = '$version'","version = '"+major+ "." +m+"'")
    buildFile.setText(s) //replace the build file's text
}

当我告诉gradle使用
bootBuildImage
时,它确实可以正常工作并增加版本号,但不仅仅如此。我正在使用IntelliJ,IntelliJ似乎检查build.gradle并检查它,以确保更改是正确的,并且没有被破坏。但是,这也会触发我的增量任务,它会再次更改文件,并重新触发检查。。。你知道这是怎么回事

现在,每当IntelliJ尝试断言一个好的build.gradle文件时,我都会得到一个不断增加的版本号。现在我需要确保我的自定义任务“incrementVersion”仅在触发bootBuildImage任务时执行


如果这不容易实现,我也可以禁用IntelliJ的自动检查。

任务主要包括一些配置和一些操作。即使不执行任务配置,也可能发生任务配置。但是,操作仅在任务执行期间运行

当您将代码直接放入给定给任务的闭包中时,就需要配置任务。因此,即使只需键入
gradlew help
,您的代码也可能被执行

您可能想做的是将其移动到任务操作。为此,只需使用
doFirst
doLast
方法将其包装:

//Groovy DSL
任务增量版本{
首先{
//你的代码在这里
}
}
//或者更好(使用惰性API):
任务。注册(“增量版本”){
首先{
//你的代码在这里
}
}
bootBuildImage.dependsOn(“incrementVersion”)//假设您也有类似的东西

没有问题,只是需要正确理解它^^非常感谢:)