我在 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'
}
我只想在我明确调用它时执行gradle releaseCandidate
. 但是,当我运行任何其他任务时,例如gradle assembleDebug
,它还运行任务发布Candidate。我不希望这种行为发生。没有任务取决于候选版本,反之亦然。
我的项目是一个Android应用程序,所以我使用android
gradle 插件。
一个常见的陷阱。向任务添加操作,否则代码将在配置阶段运行。带操作的示例任务:
task sample << {
}
正如我所见,您宁愿需要编写自定义任务而不是使用Exec
类型。我认为定义是无效的commandLine
twice.
EDIT
你可以阅读this https://blog.softwaremill.com/my-task-whats-wrong-with-your-gradle-task-82312100c595发布帖子以了解其工作原理。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)