Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Gradle Ant Scp任务_Android_Gradle_Android Studio_Build Script - Fatal编程技术网

Android Gradle Ant Scp任务

Android Gradle Ant Scp任务,android,gradle,android-studio,build-script,Android,Gradle,Android Studio,Build Script,我将搬到Android Studio,所以我将现有的ANT构建过程迁移到Gradle。不过我是格拉德尔的新手,所以在这个过程中我遇到了一些问题 我当前的ANT脚本使用将我的APK部署到服务器。我希望Gradle脚本也这样做,但当我尝试在Gradle脚本中使用scp任务时,我收到以下错误消息: 错误:(58,0)问题:无法创建任务或类型scp 原因:找不到类org.apache.tools.ant.taskdefs.optional.ssh.Scp。 这看起来像Ant的可选组件之一。操作:检查中是

我将搬到Android Studio,所以我将现有的ANT构建过程迁移到Gradle。不过我是格拉德尔的新手,所以在这个过程中我遇到了一些问题

我当前的ANT脚本使用将我的APK部署到服务器。我希望Gradle脚本也这样做,但当我尝试在Gradle脚本中使用scp任务时,我收到以下错误消息:

错误:(58,0)问题:无法创建任务或类型scp 原因:找不到类org.apache.tools.ant.taskdefs.optional.ssh.Scp。 这看起来像Ant的可选组件之一。操作:检查中是否存在适当的可选JAR -蚂蚁之家/图书馆 -IDE Ant配置对话框

不要惊慌,这是一个常见的问题。最常见的原因是 丢失的罐子

这不是一个错误;这是一个配置问题

当我转到我的ANT_HOME/lib目录时,ANT-jsch.jar已经在那里了

我如何在Android的Gradle构建脚本中使用ant scp任务

谢谢你的帮助

编辑以添加现有ANT脚本

<!-- Deploy to server -->
<target name="deployAPK">
    <input
        addproperty="userName"
        message="Username for ${serverName}: " />

    <exec executable="scp" >
        <arg value="${out.absolute.dir}/${fileName}" />
        <arg value="${userName}@${serverName}:${deployDirectory}" />
    </exec>
</target>


,Gradle似乎使用了自己的ANT实例。这就解释了为什么我的ant_主页中的ant-jsch.jar没有被使用,但我仍然无法将它添加到依赖项中。

我对ant-scp任务的依赖项无法工作的原因是它们位于错误的位置。在玩了我的脚本之后,我通过将依赖项移到任务上方和插件下方,使它工作起来。我从格雷德尔身上学到了一些新东西:)

希望这对其他人有帮助

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.12.+'
    }
}

repositories {
    mavenCentral()
}

configurations {
    sshAntTask
}

apply plugin: 'android'

dependencies {
    compile 'com.google.android.gms:play-services:4.+'
    androidTestCompile 'com.jayway.android.robotium:robotium-solo:3.5.1'
    sshAntTask 'org.apache.ant:ant-jsch:1.9.4'
}

android {
    compileSdkVersion 19
    buildToolsVersion '20.0.0'

    defaultConfig {
        // private
    }

    signingConfigs {
        release {
            // private
        }
    }

    buildTypes {
        debug {
            applicationVariants.all { variant ->
                String filePath = outputFile.absolutePath
                ant {
                    ant.taskdef(
                            name: 'scp',
                            classname: 'org.apache.tools.ant.taskdefs.optional.ssh.Scp',
                            classpath: configurations.sshAntTask.asPath)
                    scp(file: filePath, todir: "DEPLOY_DIR_HERE")
                }
            }
        }
只是想提供此解决方案的更新。升级到Android Studio 1.0和Gradle的最新版本后,scp停止为我工作。应用程序将成功构建,但当它尝试部署时,将为方法“com.jcraft.jsch.JSchException”抛出一个“NoSuchMethodError”

最终,我发现Gradle现在包含了自己的JSCHJAR,所以我们不再需要在依赖项中包含一个。修复方法是将我们的任务依赖项更改为:

sshantask'org.apache.ant:antjsch:1.9.4'


希望这对别人有帮助

您能发布Ant目标调用的源代码吗?可能与另一个代码片段重复:@Eugene-谢谢您的帮助。在问这个问题之前,我尝试了这些方法,但没有任何运气。当我将ant-jsch.jar添加到我的app/libs目录中,或者当我尝试从maven存储库中获取依赖项时,仍然会得到“无法加载类'org.apache.tools.ant.taskdefs.optional.ssh.Scp'”。你知道为什么我的依赖性不起作用吗?另外,我正在将“配置”任务添加到脚本的根目录中。@Joseph-我已经用当前的ANT目标调用更新了我的问题。