【问题标题】:Gradle ant ftp error: "425 Connection timed out"Gradle ant ftp 错误:“425 连接超时”
【发布时间】:2015-07-13 03:34:42
【问题描述】:

我的 gradle 构建脚本有问题:

apply plugin: 'java'

/*
 * Sources:
 * http://stackoverflow.com/q/17201815/4490015
 * https://github.com/Vazkii/Botania/blob/master/build.gradle
 */

repositories {
    mavenCentral()
}

configurations {
    ftpAntTask
}

/*
 * Load configuration file.
 */
ext.priv = parseConfig(file('private.properties'))

/*
 * Some project properties
 */
version = '0.0.1'
group = 'randers.notenoughvocab'
archivesBaseName = 'NotEnoughVocab'

dependencies {
    ftpAntTask('org.apache.ant:ant-commons-net:1.8.4') {
        module('commons-net:commons-net:1.4.1') {
            dependencies 'oro:oro:2.0.8:jar'
        }
    }
}

void ftp(Map args, Closure antFileset = {}) {
    ant {
        taskdef(name: 'ftp',
                classname: 'org.apache.tools.ant.taskdefs.optional.net.FTP',
                classpath: configurations.ftpAntTask.asPath)
        Map ftpArgs = args + [ //some default options
                               verbose : 'yes',
                               server  : priv.host,
                               userid  : priv.user,
                               password: priv.pass
        ]
        delegate.ftp(ftpArgs) {
            antFileset.delegate = delegate
            antFileset()
        }
    }
}

def parseConfig(File config) {
    config.withReader {
        def prop = new Properties()
        prop.load(it)
        return (new ConfigSlurper().parse(prop))
    }
}

/**
 * Uploads the javadoc to the server specified in private.properties
 */
task('uploadJavadoc', dependsOn: 'javadoc') << {
    ftp(action: 'send') {
        fileset(dir: 'build/docs/javadoc')
    }
}

jar {
    manifest {
        attributes 'Main-Class': 'randers.notenoughvocab.main.NotEnoughVocab'
    }
}

task('prepareBuild') {
    ant.replace(file: 'src/main/java/randers/notenoughvocab/main/Reference.java', token: '@VERSION@', value: version)
}

build.dependsOn(tasks.prepareBuild)

我收到以下错误消息:

无法放置文件:425 无法打开到端口 55080 的数据连接:连接超时

显然它可以工作for others。 我在private.properties 中指定的服务器可以与 FileZilla 之类的 FTP 客户端一起正常工作,我不会超时。我也尝试过使用本地 FTP 服务器,但由于传输没有带宽限制,所以传输是即时的。
我能做些什么来防止超时?我应该关注端口55080 吗?

我之前也进行了一些调试,确保priv.hostpriv.userpriv.pass 变量包含正确的信息。

【问题讨论】:

  • 您尝试过被动模式吗?将passive: 'yes'(或者passive: true)传递给ftp args

标签: gradle ant upload ftp


【解决方案1】:

如果您从家用计算机启动程序时出现该错误,该计算机通常经过 NAT 并且没有可公开路由的 IP,您可以尝试使用 FTP 被动模式。从Ant task 文档中,您只需将passive: 'yes' 添加到您的ftpArgs

FTP 是一个非常奇怪的协议:为了下载和上传文件,服务器会打开另一个连接到客户端,这通常会让没有公共 IP 的家庭用户头疼。简单的解决方案称为“被动模式”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 2018-12-08
    • 2017-02-22
    • 2023-01-28
    • 1970-01-01
    相关资源
    最近更新 更多