Gradle之FTP文件下载

Gradle之FTP文件下载

1、背景

项目上需要使用本地web,所以我们直接将web直接放入assets资源文件夹下。但是随着开发进行web包越来越大;所以我们想着从版本库里面去掉web将其忽略掉,使用gradle命令下载web。由于web包是放在局域网服务器上的,服务器支持FTP文件协议,所以使用FTP插件下载文件。

2、FTP

FTP官网文档
20190910131951.png
Gradle官网文档
gradle配置
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

转载于:https://www.cnblogs.com/hejing-michael/p/gradle-zhiftp-wen-jian-xia-zai.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Gradle的`apply from`语句仅支持从HTTP或 URL加载脚本,不直接支持从FTP URL加载脚本。但是,你可以通过使用FTP客户端库来实现从FTP服务器加载脚本的功能。 以下是一种可能的实现方式: 1. 导入FTP客户端库:首先,你需要在Gradle构建脚本中导入一个FTP客户端库,例如`commons-net`或`apache-ftpclient`。 2. 连接到FTP服务器:使用FTP客户端库提供的API,你可以创建一个连接到FTP服务器的客户端对象,并提供FTP服务器的主机名、端口号、用户名和密码。 3. 下载脚本文件:在连接到FTP服务器后,你可以使用FTP客户端库提供的API来下载指定的脚本文件到本地文件系统。 4. 应用脚本:在下载脚本文件后,你可以使用Gradle的`apply from`语句来加载并应用本地文件系统上的脚本。 以下是一个示例代码片段,展示了如何使用`commons-net`库从FTP服务器加载并应用脚本: ```groovy import org.apache.commons.net.ftp.FTPClient task downloadScript { doLast { def ftpClient = new FTPClient() ftpClient.connect("ftp.example.com", 21) // 设置FTP服务器的主机名和端口号 ftpClient.login("username", "password") // 设置FTP服务器的用户名和密码 ftpClient.enterLocalPassiveMode() def remoteFilePath = "/path/to/script.gradle" // 设置远程脚本文件的路径 def localFilePath = "${buildDir}/script.gradle" // 设置本地文件保存路径 ftpClient.retrieveFile(remoteFilePath, new File(localFilePath)) ftpClient.disconnect() apply from: localFilePath // 应用本地文件系统上的脚本 } } ``` 你可以创建一个名为`downloadScript`的Gradle任务,并在该任务中执行FTP操作来下载并应用脚本。然后,你可以运行`gradle downloadScript`命令来执行该任务。 请注意,这只是一个示例,实际的实现可能会因所使用FTP客户端库和相关配置而有所不同。你可以根据自己的需求和环境进行适当的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值