Java 从gradle调用的Ant sshexec任务不';不显示输出

Java 从gradle调用的Ant sshexec任务不';不显示输出,java,groovy,gradle,Java,Groovy,Gradle,我想在我的gradle自定义任务中使用ApacheAntsshexectask。问题是此任务不起作用(控制台中未显示输出,并且未执行sshexec操作)。我就是这样使用它的: configurations { sshexecAntTask } repositories { mavenCentral() } dependencies { sshexecAntTask 'org.apache.ant:ant-jsch:1.7.0' } // --------------

我想在我的gradle自定义任务中使用ApacheAnt
sshexec
task。问题是此任务不起作用(控制台中未显示输出,并且未执行sshexec操作)。我就是这样使用它的:

configurations {
    sshexecAntTask
}

repositories {
    mavenCentral()
}

dependencies {
    sshexecAntTask 'org.apache.ant:ant-jsch:1.7.0'
}

// ----------------------------------------------------

import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files

class MyCustomTask extends DefaultTask {

    @TaskAction
    def build() {
        String command = ""
        command = 'cmd.exe /C mdir C:\\aadd'
        runSshCommand(command)
    }

    private void runSshCommand(String command) {
        String host = "host"
        String username = "username"
        String password = "password"

        ant.taskdef(name: 'sshexec', classname: 'org.apache.tools.ant.taskdefs.optional.ssh.SSHExec', classpath: project.configurations.sshexecAntTask.asPath)
        // this command is not executed; why?
        ant.sshexec(host: host, username: username, password: password, command: command, trust: 'true', failonerror: 'true')
    }

}
[编辑] 我已经测试了sshexec,以下是我的结果:

  • 从ant启动的命令
    cmd.exe/C echo test>C:\testresult.txt
    工作正常,输出返回文件
  • 从gradle启动的命令
    cmd.exe/C echo test>C:\testresult.txt
    工作正常,输出返回到文件。太好了
  • 从ant启动的命令
    cmd.exe/C echo test
    工作正常,输出返回到stdout<强>
  • 从gradle启动的命令
    cmd.exe/C echo test
    工作正常,但输出未返回到stdout<强>
  • 从ant启动的命令
    cmd.exe/C mkdir C:\\\\Inetpub\\\\ftproot\\\\\temp\\\\jakisnowykatalog
    工作正常,并且创建了目录(我需要使用
    \\\\\\\
    作为路径分隔符,因为
    \\
    不工作)
  • 从gradle启动的命令
    cmd.exe/C mkdir C:\\\\Inetpub\\\\ftproot\\\\temp\\\\jakisnowykatalog
    无效,并且未创建目录
  • 我应该补充一点,我想连接windows ssh服务器(不是unix/mac),但我也用mac shh测试了这些命令,但没有成功。请帮忙

    [另一次编辑] 我已经创建了groovy测试代码,它使用jsch库来执行命令,并且可以正常工作。我仍然不知道为什么ant任务不起作用

    import com.jcraft.jsch.*
    import java.util.Properties;
    
    private void jschTest() {
        Session session = null
        Channel channel = null
        try {
            JSch jsch = new JSch()
            session = jsch.getSession("host", "login", 22)
            session.setPassword("password")
            Properties config = new Properties()
            config.put("StrictHostKeyChecking", "no")
            session.setConfig(config)
            session.connect()
    
            String command = "cmd.exe /C mkdir C:\\gradledir"
            channel = session.openChannel("exec");
            ((ChannelExec)channel).setCommand(command);
            channel.connect()
        }
        catch (Exception e) {
            println e.getMessage()
        }
        finally {
            if (session!=null) {
                session.disconnect()
            }
            if (channel!=null) {
                channel.disconnect()
            }
        }
    }
    

    假设您声明了一个MyCustomTask类型的任务并正确执行它,我看不出Ant任务没有理由不执行。问题更可能出现在其他地方(例如,Ant任务的配置错误)。

    谢谢,我会检查它。我确信ant工作正常,因为我每天都使用它。