6.Gradle高级特性

1、任务常见的几种定义方式

  几种常见的任务定义方式,我直接上代码,在代码中写明了注释,大家一看就懂的,就不一一展开介绍了,我们写代码时可以根据自己的爱好灵活选择使用哪种方式就好,其代码如下:

        // 第一种,前面见过的
        task hello {
            doLast {
                println "Hello World!"
            }
        }
        
        // 第二种,以字符串形式定义的
        task('hello') {
            doLast {
                println "hello"
            }
        }
        
        // 第三种,以字符串形式定义的,
        // 其类型为Copy任务类型,接下来会具体讲解
        task('copy', type: Copy) {
            from(file('srcDir'))
            into(buildDir)
        }
        
        // 第四种,使用create创建
        tasks.create(name: 'hello') {
            doLast {
                println "hello"
            }
        }
        
        // 第四种,使用create创建
        tasks.create(name: 'copy', type: Copy) {
            from(file('srcDir'))
            into(buildDir)
        }

2、对任务进行配置

  针对前面见到的 Copy 任务,我将详细的分析介绍下任务是如何进行配置,当然其它的任务类型和 Copy 类型配置大同小异,了解了 Copy 类型的配置后自己就可以举一反三的实现其它的任务了。

  首先我们定义一个 myCopy 的任务,并且使用闭包的方式来配置该任务,代码如下:

        task myCopy(type: Copy) {
          from 'resources'
          into 'target'
          include('**/*.txt', '**/*.xml', '**/*.properties')
        }

3、任务的重写

   task copy(type: Copy)
        
        task copy(overwrite: true) {
            doLast {
                println('overwrite the copy.')
            }
        }

这个任务重写了拷贝任务,仅仅打印输出了一行文字

4、跳过或禁止某个任务

  这个比较简单,当然在实际项目中又是非常实用的一个技巧,比如,我们构建打包时,有时候不需要打全包,只需要打部分工程,这时我们就可以通过条件选择进行跳过某些任务执行。直接看代码吧:

        task hello {
            doLast {
                println 'hello world'
            }
        }
        
        hello.onlyIf { !project.hasProperty('skipHello') }
        
        hello.enabled = false

猜你喜欢

转载自www.cnblogs.com/Pibaosi/p/10471019.html