Gradle之FTP文件下載
1、背景
項目上需要使用本地web,所以我們直接將web直接放入assets資源文件夾下。但是隨着開發進行web包越來越大;所以我們想着從版本庫裏面去掉web將其忽略掉,使用gradle命令下載web。由於web包是放在局域網服務器上的,服務器支持FTP文件協議,所以使用FTP插件下載文件。
2、FTP
FTP官網文檔
Gradle官網文檔
gradle配置
3、FTP工具
ftp-util.gradle
configurations {
ftpAntTask
}
dependencies {
ftpAntTask("org.apache.ant:ant-commons-net:1.9.2") {
module("commons-net:commons-net:3.3")
}
}
void downloadFtpFiles(String serverIp, String userId, String password, String url, localDir) {
ant.taskdef(
name: 'ftp',
classname: 'org.apache.tools.ant.taskdefs.optional.net.FTP',
classpath: configurations.ftpAntTask.asPath
)
//指定ftp地址及賬戶信息
ant.ftp(action: 'get', server: serverIp, userid: userId, password: password, remotedir: url) {
// 刪除老文件
delete(new File(localDir))
//指定下載文件位置
fileset(dir: new File(localDir)) {
include(name: "**")
}
}
}
//導出函數
ext {
downloadFtpFiles = this.&downloadFtpFiles
}
使用方式:
導入方式:將ftp-util.gradle文件放在根目錄下然後使用一下代碼導入groovy
代碼
apply from: "${project.rootProject.file('ftp-util.gradle')}"
下載任務
task downloadFiles() {
//清理緩存
dependsOn 'clean'
def dir = buildDir.getPath() + '/dir'
doLast {
//獲取最新版本信息
ant {
println 'web-ftp:serverIp:' + serverIp
println 'web-ftp:userId:' + userId
println 'web-ftp:password:' + password
println 'web-ftp:dir:' + dir
println 'web-ftp:sync start'
def url = webUrl + '/latest'
//調用FTP插件下載文件函數
downloadFtpFiles(serverIp, userId, password, url, dir)
println 'web-ftp:sync end'
}
}
}
調用task方式
./gradlew downloadFiles