Android Plugin DSL Reference 参考文档 :
org.gradle.api.tasks.bundling.Zip 自带任务 ( 任务类型 ) 文档 :https://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Zip.html
org.gradle.api.tasks.bundling.Zip 自带任务 用于 对 目录 或 文件 进行 zip 格式的压缩 ,
org.gradle.api.tasks.bundling.Zip 原型如下 :
public class Zip extends AbstractArchiveTask {
}
org.gradle.api.tasks.bundling.Zip 类继承了 org.gradle.api.tasks.bundling.AbstractArchiveTask 类 ;
org.gradle.api.tasks.bundling.AbstractArchiveTask 类 原型如下 : 其中
特别注意 : 设置的 被压缩的目录或文件 , 压缩包的输出目录 , 尽量是 build 目录下 , 也就是 "${buildDir}/"
目录下 ;
public abstract class AbstractArchiveTask extends AbstractCopyTask {
private final DirectoryProperty archiveDestinationDirectory;
private final RegularFileProperty archiveFile;
private final Property<String> archiveName;
private final Property<String> archiveBaseName;
private final Property<String> archiveAppendix;
private final Property<String> archiveVersion;
private final Property<String> archiveExtension;
private final Property<String> archiveClassifier;
private final Property<Boolean> archivePreserveFileTimestamps;
private final Property<Boolean> archiveReproducibleFileOrder;
/** @deprecated */
@Deprecated
public void setArchiveName(String name) {
((DeprecateProperty)DeprecationLogger.deprecateProperty(AbstractArchiveTask.class, "archiveName").replaceWith("archiveFileName")).willBeRemovedInGradle7().withDslReference().nagUser();
this.archiveName.convention(name);
this.archiveName.set(name);
}
/** @deprecated */
@Deprecated
public void setDestinationDir(File destinationDir) {
((DeprecateProperty)DeprecationLogger.deprecateProperty(AbstractArchiveTask.class, "destinationDir").replaceWith("destinationDirectory")).willBeRemovedInGradle7().withDslReference().nagUser();
this.archiveDestinationDirectory.set(this.getProject().file(destinationDir));
}
public AbstractCopyTask from(Object... sourcePaths) {
this.getMainSpec().from(sourcePaths);
return this;
}
}
Zip 任务代码示例 : 该任务定义在了 根目录下的 build.gradle 构建脚本中 ;
task zip(type: Zip){
// 设置输出压缩包名称
archiveName 'logs.zip'
// 设置输出目录
destinationDir file("${buildDir}/myZip")
// 将根目录下的 gradle 目录进行 zip 打包
from "${buildDir}/outputs/logs"
}