Gradle之FTP文件下載

Gradle之FTP文件下載

1、背景

項目上需要使用本地web,所以我們直接將web直接放入assets資源文件夾下。但是隨着開發進行web包越來越大;所以我們想着從版本庫裏面去掉web將其忽略掉,使用gradle命令下載web。由於web包是放在局域網服務器上的,服務器支持FTP文件協議,所以使用FTP插件下載文件。

2、FTP

FTP官網文檔
在這裏插入圖片描述
Gradle官網文檔
gradle配置
[外鏈圖片轉存失敗(img-OCJY1cKG-1568097056036)(https://raw.githubusercontent.com/hejing-michael/images/master/images/20190910132710.png)]

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章