gradle 中使用FTP协同处理文件

项目里有些资源文件是分布在局域网的共享盘上,在gradle中只能用net use 命令先登录再接着处理。但net use 一些情况下会不成功,并且如果系统服务没开全也连不了。而且windows的共享目录只允许对多20个连接,根本不够用。

后来想了想不然改FTP代理好了,一个服务端就可以够很多人使用,也更好配置。


服务端可以使用 FileZilla Server,或者用Apache的FTP Server。


FileZilla Server配置参见:http://hbiao68.iteye.com/blog/2164338


gradle 参照:https://stackoverflow.com/questions/24054752/how-to-upload-folder-contents-to-ftp-server-using-gradle


我稍微更新了一下:

configurations {
    ftpAntTask
}

dependencies {
    ftpAntTask("org.apache.ant:ant-commons-net:1.9.2") {
        module("commons-net:commons-net:3.3")
    }
}

task syncResources {

    ant.taskdef(name: 'ftp',
                classname: 'org.apache.tools.ant.taskdefs.optional.net.FTP',
                classpath: configurations.ftpAntTask.asPath)

    ant.ftp(action:"get", server: "{你的FTP服务器}", userid: "anonymous", password: "anonymous",
            preservelastmodified:"true", timediffauto:"true", depends:"true") {
        fileset(dir: "${下载目录}") {
            include(name: "**")
        }
    }

    ......
}


action是具体操作,上传就不用写这个参数了。

userid,password 根据你的配置填。

preservelastmodified:"true", timediffauto:"true", depends:"true"
这个三个是根据时间戳进行增量复制。


fileset 的dir是指本地目录,include是只ftp上的目录。注意,如果没有设置 remotedir,那么本地目录上下载的会包含完整的路径。如果想略过父目录,下载在本地目录下,要配置remotedir。


ftp的具体用法参见: https://ant.apache.org/manual/Tasks/ftp.html


你可能感兴趣的:(android,gradle)