Gradle实战二:Task详解及实战
发布日期:2021-05-14 18:07:37 浏览次数:21 分类:精选文章

本文共 4161 字,大约阅读时间需要 13 分钟。

Gradle Task ���������������������

Gradle ������������������������������������������������������ Task������������������������������������������������������������������������������������������ Gradle Task ������������������������������������

1. Task ������������

Gradle ������������������������������ Task��������������������������� Task ���������������

  • ������������ task ������������ Task���

    task group: 'imooc', name: 'hellotask' {
    println 'i am hellotask'
    }
  • ������ TaskContainer ������ Task���

    this.tasks.create(name: 'hellotask2') {
    setGroup('imooc')
    setDescription('study task2')
    println 'i am hellotask2'
    }

������������������������������������������ Task���

2. Task ������������������

��� Gradle ������Task ��������������������� build.gradle ������������������������������������������������������������������ Task ���������������

def startBuildTime, endBuildTimethis.afterEvaluate {
// ������ preBuildTask ������������������
def preBuildTask = project.tasks.getByName('preBuild')
preBuildTask.doFirst {
startBuildTime = System.currentTimeMillis()
println 'startBuildTime is ' + startBuildTime
}
def buildTask = project.tasks.getByName('build')
buildTask.doLast {
endBuildTime = System.currentTimeMillis()
println 'the end time is ' + endBuildTime
println "============ the build time is ${endBuildTime - startBuildTime}"
}
}

������������������������������������������������������������������

3. Task ���������������������

Task ��������������������������������������������������������������������������������������������������������� Task ���������������������

task taskx {
doLast {
println 'taskx'
}
}
task tasky {
doLast {
println 'tasky'
}
}
task taskz(dependsOn: [taskx, tasky]) {
doLast {
println 'taskz'
}
}
task taskz2 {
dependsOn this.tasks.findAll { task ->
return task.name.startsWith('lib')
}
doLast {
println 'taskz2'
}
}
task lib1 {
doLast {
println 'lib1'
}
}
task lib2 < [anotherDependency] {
doLast {
println 'lib2'
}
}
task nolib {
doLast {
println 'nolib'
}
}

������ dependsOn ������������������ Task��������������� Task ������������ Task ���������������

4. ��� Task ������������������

Gradle ������������������������������ Task ������������������������ mustRunAfter ��� dependsOn������������������������������������

task taskx {
doLast {
println 'taskx'
}
}
task tasky {
mustRunAfter taskx
doLast {
println 'tasky'
}
}
task taskz {
mustRunAfter tasky
doLast {
println 'taskz'
}
}
// ������������������ Task���
// gradlew taskz tasky taskx

������ mustRunAfter ������������������ Task ��������������� Task ���������������

5. ��� Task ������������������������

������ Gradle ��������������������������������� Task ��������������������������������������������� Task ���������������������������������������

task handleReleaseFile {
def srcFile = file('releases.xml')
def destDir = new File(project.buildDir, 'generated/release/')
doLast {
println '���������������������xml���������������'
destDir.mkdir()
def releases = new XmlParser().parse(srcFile)
releases.release.each { releaseNode ->
def name = releaseNode.versionCode.text()
def versionName = releaseNode.versionName.text()
def versionInfo = releaseNode.versionInfo.text()
def destFile = new File(destDir, "release-${name}.text")
destFile.withWriter {
writer ->
writer.write("${name} > ${versionName} > ${versionInfo}")
}
}
}
}
task handleReleaseFileTest(dependsOn: handleReleaseFile) {
def dir = fileTree(project.buildDir.path + 'generated/release/')
doLast {
dir.each {
println 'the file name is ' + it
}
println '���������������������'
}
}

��������������������� fileTree ������������������������������������������������������

������������ Gradle Task ������������������������������������������������������

上一篇:Gradle实战三:AndroidSourceSet
下一篇:Terminal相关

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月07日 23时08分31秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章