Java 从gradle调用的Ant sshexec任务不';不显示输出
我想在我的gradle自定义任务中使用ApacheAntJava 从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' } // --------------
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,以下是我的结果:
cmd.exe/C echo test>C:\testresult.txt
工作正常,输出返回文件cmd.exe/C echo test>C:\testresult.txt
工作正常,输出返回到文件。太好了李>
cmd.exe/C echo test
工作正常,输出返回到stdout<强>强>cmd.exe/C echo test
工作正常,但输出未返回到stdout<强>强>cmd.exe/C mkdir C:\\\\Inetpub\\\\ftproot\\\\\temp\\\\jakisnowykatalog
工作正常,并且创建了目录(我需要使用\\\\\\\
作为路径分隔符,因为\\
,
不工作)cmd.exe/C mkdir C:\\\\Inetpub\\\\ftproot\\\\temp\\\\jakisnowykatalog
无效,并且未创建目录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工作正常,因为我每天都使用它。