gradle系列—— Copy任务 Task高级用法

本文深入探讨Gradle中Copy任务的多种定义方式及高级配置,包括文件筛选、重命名等实用技巧,帮助开发者掌握Gradle任务配置的核心技能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今日名言

我们每天都在经受巨大的痛苦,而最大的痛苦就是不被人理解

文章目录

导读

通过上一节gradle系列——Task任务简单使用 我们知道了gradle中Task的简单使用,比如如何给任务添加行为,如何为任务设置依赖关系,下面我们开始针对Copy任务来详解Task的高级用法

在开发的过程中,我们见过很多种定义任务的方式,不要奇怪,gradle的语法比较松散,基本上有这些方式定义

// 第一种,比较普通的方式
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)
}

如果遇见上面这些方式不要慌张,他们表示的意思都是一样的

配置任务

我们针对copy任务进行配置,了解了copy任务的配置,我们就可以举一反三进行其他任务的配置

首先我们定义一个任务

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

该任务实现了把src目录下的所有 .txt、.xml 和 .properties 文件全部拷贝到target目录下。

比如我们要拷贝一个文件时需要对文件进行改名,我们可以这么写

task myCopy(type: Copy) {
  from 'src'
  into 'target'
  include('text.txt')
  // 改名操作
  rename { String fileName ->
     fileName = "gai.txt"
  }
}

有一个重要的问题,我们从何处得知这些操作如何做呢

当然是官网:gradle官网

Gradle 中很多其它常用的任务,比如JarDeleteWarZipTarUpload等等,这些的用法和 Copy 配置一样,大家可以自己编写任务测试下

这里贴一个Jar类型的任务

打包jar的一个任务

task makeJar(type: Jar) {
    // 输入文件
    from zipTree(file('classes.jar'))
    // 添加文件
    from fileTree(dir: 'src/main', includes: ['assets/**']) // 打包assets目录下的所有文件
    // 输出名称 会自动加上.jar    
    baseName = "test"
    // 输出路径
    destinationDir = file('des/jar/')
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ddssingsong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值