gradle--第十五章 使用文件3

15.6 拷贝文件
你可以使用一些拷贝任务来拷贝文件。拷贝任务是非常灵活的,例如,它允许你在复制文件的时候过滤文件内容,并且映射到另外一个文件。
要使用拷贝任务,你必须提供一些要拷贝的源文件,以及拷贝后文件要存放的目录。你也可以描述文件在拷贝的过程中是怎么传输的,你可以使用一个copy spec来完成这些任务。一个copy spec 是由CopySpec接口表示的.CopyTask实现了这个接口。你可以通过CopySpec.from()方法来描述源文件,并使用Copy.into()来设置拷贝到的目录。
Example 15.10. Copying files using the copy task


build.gradle
task copyTask(type: Copy) {
    from 'src/main/webapp'
    into 'build/explodedWar'
}
from()方法接受和files()方法相同的任意参数。当参数是一个目录时,所有在这个目录下的文件都会递归的拷贝到新目录(除了目录本身自己)。当参数描述的是一个文件时,文件被拷贝到目标目录。当参数描述的文件不存在时,该参数被忽略。如果参数是一个任务,该任务的输出文件(例如任务创建的文件)都会被拷贝,并且该任务会添加到Copy任务的依赖中.into()方法接受和file()相同的任意参数。如下是一个例子:
Example 15.11. Specifying copy task source files and destination directory


build.gradle
task anotherCopyTask(type: Copy) {
    // Copy everything under src/main/webapp
    from 'src/main/webapp'
    // Copy a single file
    from 'src/staging/index.html'
    // Copy the output of a task
    from copyTask
    // Copy the output of a task using Task outputs explicitly.
    from copyTaskWithPatterns.outputs
    // Copy the contents of a Zip file
    from zipTree('src/main/assets.zip')
    // Determine the destination directory later
    into { getDestDir() }
}
你可以使用Ant风格的 include 或者exclude或者使用闭包来选择文件:
Example 15.12. Selecting the files to copy


build.gradle
task copyTaskWithPatterns(type: Copy) {
    from 'src/main/webapp'
    into 'build/explodedWar'
    include '**/*.html'
    include '**/*.jsp'
    exclude { details -> details.file.name.endsWith('.html') &&
                         details.file.text.contains('staging') }
}
你也可以使用Project.copy()方法来复制文件。除了有一些限制外,它跟前面的复制任务一样工作。首先,copy()不是增量式的(查看第14.9章“Skipping tasks that are up-to-date”)
Example 15.13. Copying files using the copy() method without up-to-date check


build.gradle
task copyMethod << {
    copy {
        from 'src/main/webapp'
        into 'build/explodedWar'
        include '**/*.html'
        include '**/*.jsp'
    }
}
第二,copy()方法不能影响任务依赖当一个任务被使用为一个复制的源文件(例如作为from()的一个参数),因为他是一个方法而不是一个任务,如果使用copy方法作为任务动作的一部分,你必须明确定义所有的输入和输出来获取正确的行为。
Example 15.14. Copying files using the copy() method with up-to-date check


build.gradle
task copyMethodWithExplicitDependencies{
    // up-to-date check for inputs, plus add copyTask as dependency
    inputs.file copyTask
    outputs.dir 'some-dir' // up-to-date check for outputs
    doLast{
        copy {
            // Copy the output of copyTask
            from copyTask
            into 'some-dir'
        }
    }
}
任何可能的情况下,优先使用Copy任务,因为它不需要你做额外的工作就可以支持增量是构建和任务依赖接口。copy方法可以用来拷贝文件,作为任务实现的一部分。也就是说,copy方法设计用来为自定义的任务服务((see Chapter 58, Writing Custom Task Classes) t),这些自定义的任务需要拷贝文件来作为他们功能的一部分。在这种场景下,自定义任务必须充分的定义好copy动作相关的输入和输出文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
校园失物招领系统管理系统按照操作主体分为管理员和用户。管理员的功能包括字典管理、论坛管理、公告信息管理、失物招领管理、失物认领管理、寻物启示管理、寻物认领管理、用户管理、管理员管理。用户的功能等。该系统采用了Mysql数据库,Java语言,Spring Boot框架等技术进行编程实现。 校园失物招领系统管理系统可以提高校园失物招领系统信息管理问题的解决效率,优化校园失物招领系统信息处理流程,保证校园失物招领系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 ,管理员权限操作的功能包括管理公告,管理校园失物招领系统信息,包括失物招领管理,培训管理,寻物启事管理,薪资管理等,可以管理公告。 失物招领管理界面,管理员在失物招领管理界面可以对界面显示,可以对失物招领信息的失物招领状态进行查看,可以添加新的失物招领信息等。寻物启事管理界面,管理员在寻物启事管理界面查看寻物启事种类信息,寻物启事描述信息,新增寻物启事信息等。公告管理界面,管理员在公告管理界面新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值