15.7 使用同步任务
同步任务继承于拷贝任务。当他执行的时候,它把源文件拷贝到目标文件夹,并且移除目标文件夹中不是拷贝的任何文件。这个功能是非常有用的,例如安装应用程序,创建一个你的归档文件的一个副本,或者维护你的工程依赖的一个副本。
如下是一个维持工程build/libs目录运行时依赖的一个副本
Example 15.18. Using the Sync task to copy dependencies
build.gradle
task libs(type: Sync) {
from configurations.runtime
into "$buildDir/libs"
}
15.8 创建归档文件
一个工程可以拥有很多的归档文件,只要你想要,你也可以添加WAR,ZIP以及TAR归档文件到你的工程中。归档文件可以通过各种各样的归档任务来创建,如Zip,Tar,Jar,War以及Ear.他们的工作方式都是一样的,所以我们以创建Zip文件是如何创建的。
Example 15.19. Creating a ZIP archive
build.gradle
apply plugin: 'java'
task zip(type: Zip) {
from 'src/dist'
into('libs') {
from configurations.runtime
}
}
归档任务跟拷贝任务执行的方式是一样的,也是同样的实现了CopySpec接口。同拷贝拷贝任务一样,我们使用from()方法来描述输入的文件并且可以使用into()方法来描述归档文件的最终位置。你也可以过滤文件内容,重命名文件以及其他在拷贝文件中可以做的所有事情。
15.8.1 归档命名
projectName-version格式用来产生归档文件的名字,例如:
Example 15.20. Creation of ZIP archive
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)
Output of gradle -q myZip
> gradle -q myZip
zipProject-1.0.zip
build/distributions
build/distributions/zipProject-1.0.zip
这里添加了一个Zip归档任务myZip,产生的归档文件的名字是zipProject-1.0.zip。区分归档任务的名字和归档任务产生的归档文件的名字是非常重要的。缺省的归档文件的名字可以由archivesBaseName属性来指定。归档文件的名字也可以在以后的任何时间改变。
归档任务上有许多的属性可以使用。下表 Table 15.1, “Archive tasks - naming properties“列出了这些属性。例如,你可以改变归档文件的名字:
Example 15.21. Configuration of archive task - custom archive name
build.gradle
apply plugin: 'java'
version = 1.0
task myZip(type: Zip) {
from 'somedir'
baseName = 'customName'
}
println myZip.archiveName
Output of gradle -q myZip
> gradle -q myZip
customName-1.0.zip
你也可以进一步的定义归档文件的名字
Example 15.22. Configuration of archive task - appendix & classifier
build.gradle
apply plugin: 'java'
archivesBaseName = 'gradle'
version = 1.0
task myZip(type: Zip) {
appendix = 'wrapper'
classifier = 'src'
from 'somedir'
}
println myZip.archiveName
Output of gradle -q myZip
> gradle -q myZip
gradle-wrapper-1.0-src.zip
15.8.2 在多个归档文件中分享内容
你可以使用 Project.copySpec()方法来在归档文件之间分享内容
经常你需要发布一个归档文件,这样其他的工程也可以使用,在 Chapter 52, Publishing artifacts有关于这方面的描叙。
同步任务继承于拷贝任务。当他执行的时候,它把源文件拷贝到目标文件夹,并且移除目标文件夹中不是拷贝的任何文件。这个功能是非常有用的,例如安装应用程序,创建一个你的归档文件的一个副本,或者维护你的工程依赖的一个副本。
如下是一个维持工程build/libs目录运行时依赖的一个副本
Example 15.18. Using the Sync task to copy dependencies
build.gradle
task libs(type: Sync) {
from configurations.runtime
into "$buildDir/libs"
}
15.8 创建归档文件
一个工程可以拥有很多的归档文件,只要你想要,你也可以添加WAR,ZIP以及TAR归档文件到你的工程中。归档文件可以通过各种各样的归档任务来创建,如Zip,Tar,Jar,War以及Ear.他们的工作方式都是一样的,所以我们以创建Zip文件是如何创建的。
Example 15.19. Creating a ZIP archive
build.gradle
apply plugin: 'java'
task zip(type: Zip) {
from 'src/dist'
into('libs') {
from configurations.runtime
}
}
归档任务跟拷贝任务执行的方式是一样的,也是同样的实现了CopySpec接口。同拷贝拷贝任务一样,我们使用from()方法来描述输入的文件并且可以使用into()方法来描述归档文件的最终位置。你也可以过滤文件内容,重命名文件以及其他在拷贝文件中可以做的所有事情。
15.8.1 归档命名
projectName-version格式用来产生归档文件的名字,例如:
Example 15.20. Creation of ZIP archive
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)
Output of gradle -q myZip
> gradle -q myZip
zipProject-1.0.zip
build/distributions
build/distributions/zipProject-1.0.zip
这里添加了一个Zip归档任务myZip,产生的归档文件的名字是zipProject-1.0.zip。区分归档任务的名字和归档任务产生的归档文件的名字是非常重要的。缺省的归档文件的名字可以由archivesBaseName属性来指定。归档文件的名字也可以在以后的任何时间改变。
归档任务上有许多的属性可以使用。下表 Table 15.1, “Archive tasks - naming properties“列出了这些属性。例如,你可以改变归档文件的名字:
Example 15.21. Configuration of archive task - custom archive name
build.gradle
apply plugin: 'java'
version = 1.0
task myZip(type: Zip) {
from 'somedir'
baseName = 'customName'
}
println myZip.archiveName
Output of gradle -q myZip
> gradle -q myZip
customName-1.0.zip
你也可以进一步的定义归档文件的名字
Example 15.22. Configuration of archive task - appendix & classifier
build.gradle
apply plugin: 'java'
archivesBaseName = 'gradle'
version = 1.0
task myZip(type: Zip) {
appendix = 'wrapper'
classifier = 'src'
from 'somedir'
}
println myZip.archiveName
Output of gradle -q myZip
> gradle -q myZip
gradle-wrapper-1.0-src.zip
15.8.2 在多个归档文件中分享内容
你可以使用 Project.copySpec()方法来在归档文件之间分享内容
经常你需要发布一个归档文件,这样其他的工程也可以使用,在 Chapter 52, Publishing artifacts有关于这方面的描叙。