codecamp

Gradle创建归档文件

一个项目可以有很多 JAR 文件,你可以向项目中添加 WAR , ZIP 和 TAR 文档,使用归档任务可以创建这些文档: Zip , Tar , Jar , War 和Ear. 它门都以同样的机制工作.

例 15.19 创建一个 ZIP 文档

build.gradle

apply plugin: 'java'

task zip(type: Zip) {
    from 'src/dist'
    into('libs') {
        from configurations.runtime
    }
}

所有的归档任务的工作机制和复制任务相同,它们都实现了 CopySpec 接口,和 Copy 任务一样,使用from() 方法指定输入文件,可以选择性的使用 into() 方法指定什么时候结束.你还可以过滤文件内容,重命名文件等等,就如同使用复制规则一样.

重命名文档

projectName-vsersion.type 格式可以被用来生成文档名,例如:

例 15.20 创建压缩文档

build.gradle

apply plugin: 'java'

version = 1.0

task myZip(type: Zip) {
    from 'somedir'
}

println myZip.archiveName
println relativePath(myZip.destinationDir)
println relativePath(myZip.archivePath)

使用 gradle -q myZip 命令进行输出:

> gradle -q myZip
zipProject-1.0.zip
build/distributions
build/distributions/zipProject-1.0.zip

上面例子使用一个名为 myZip的 Zip 归档任务生成名称为 zipProject-1.0.zip 的 ZIP 文档,区分文档任务名和最终生成的文档名非常的重要

可以通过设置项目属性 archivesBaseName 的值来 修改生成文档的默认名.当然,文档的名称也可以通过其他方法随时更改.

归档任务中有些属性可以配置,如表 15.1 所示:

表 15.1 归档任务-属性名

属性名类型默认值描述
archiveNameStringbaseName-appendix-version-classifier.extension,如果其中任何一个都是空的,则不添加名称归档文件的基本文件名
archivePathFiledestinationDir/archiveName生成归档文件的绝对路径。
destinationDirFile取决于文档类型, JAR 和 WAR 使用project.buildDir/distributions. project.buildDir/libraries.ZIP 和 TAR归档文件的目录
baseNameStringproject.name归档文件名的基础部分。
appendixStringnull归档文件名的附加部分。
versionStringproject.version归档文件名的版本部分。
classifierStringnull归档文件名的分类部分
extensionString取决于文档类型和压缩类型: zip, jar, war, tar, tgz 或者 tbz2.归档文件的扩展名

例 15.21 配置归档文件-自定义文档名

build.gradle

apply plugin: 'java'
version = 1.0

task myZip(type: Zip) {
    from 'somedir'
    baseName = 'customName'
}

println myZip.archiveName

使用 gradle -q myZip 命令进行输出:

> gradle -q myZip
customName-1.0.zip

更多配置:

例 15.22 配置归档任务- 附加其他后缀

build.gradle

apply plugin: 'java'
archivesBaseName = 'gradle'
version = 1.0

task myZip(type: Zip) {
    appendix = 'wrapper'
    classifier = 'src'
    from 'somedir'
}

println myZip.archiveName

使用 gradle -q myZip 命令进行输出:

> gradle -q myZip
gradle-wrapper-1.0-src.zip

多个文档共享内容

你可以使用 Project.copySpec() 在不用归档文件间共享内容. 如果你想发布一个文档,然后在另一个项目中使用,这部分将在第 53 章 发布文档 中讲述.


Gradle使用同步任务
使用 Ant 任务和 Ant 类型的构建
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

在 Gradle中使用Ant

使用 Ant 任务和 Ant 类型的构建

API

Ear 插件 (未完成)

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }