我在gradle中定义一个任务:
task releaseCandidate(type: Exec) {
commandLine 'git', 'checkout', 'develop'
// Increment version code in Manifest
String manifest = new File('AndroidManifest.xml').getText('UTF-8')
Pattern pattern = Pattern.compile('android:versionCode="([0-9]+)"')
Matcher matcher = pattern.matcher(manifest)
matcher.find()
int newVersionCode = Integer.parseInt(matcher.group(1)) + 1
manifest = manifest.replaceAll(
"android:versionCode=\"([0-9]+)\"", "android:versionCode=\"$newVersionCode\""
)
new File('AndroidManifest.xml').write(manifest, 'UTF-8')
commandLine 'git', 'diff'
}
Run Code Online (Sandbox Code Playgroud)
只有当我明确地将其称为时,我才想执行它gradle releaseCandidate.但是,当我运行任何其他任务时,例如gradle assembleDebug,它还会运行任务releaseCandidate.我不希望这种行为发生.没有任务取决于releaseCandidate,反之亦然.
我的项目是一个Android应用程序,所以我使用的是androidgradle插件.
我有简单build.gradle(或任何build.gradle有任务println)
println GradleVersion.current().prettyPrint()
task task1{
println 'task1 starting'
}
Run Code Online (Sandbox Code Playgroud)
现在,当我运行时,$ gradle build我总是看到执行任务或打印输出
task1 starting
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar
:assemble
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build
BUILD SUCCESSFUL
Total time: 1.291 secs
Run Code Online (Sandbox Code Playgroud)
为什么始终从println内部任务输出?