gradle:在远程计算机上执行时找不到命令

时间:2016-03-08 14:06:32

标签: java macos gradle android-gradle gradle-plugin

我想在具有mac OS的远程机器上执行gradle命令。我编写了Java程序并使用了JSch库。我能够执行其他命令,如pwd,ls等。但是当我执行任何gradle命令时,它说

Connected
bash: gradle: command not found
exit-status: 127
DONE
BUILD SUCCESSFUL (total time: 8 seconds)

我已经在配置文件中设置了GRADLE_HOME路径,并且我能够从终端执行命令但不能从远程程序执行命令。

以下是我的Java程序

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package commandexecuter;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import java.io.InputStream;
import java.util.Properties;

/**
 *
 * @author dgulhane
 */
public class CommandExecuter {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        String host = "abc.xyz.com";
        String username = "Admin";
        String password = "123456";
        String command = "gradle -v";


        try {
            java.util.Properties config = new Properties();
            config.put("StrictHostKeyChecking", "no");
            JSch jSch = new JSch();

            Session session = jSch.getSession(username, host, 22);
            session.setPassword(password);
            session.setConfig(config);
            session.connect();
            System.out.println("Connected");

             Channel channel=session.openChannel("exec");
            ((ChannelExec)channel).setCommand(command);
            channel.setInputStream(null);
            ((ChannelExec)channel).setErrStream(System.err);

            InputStream in=channel.getInputStream();
            channel.connect();
            byte[] tmp=new byte[1024];
            while(true){
              while(in.available()>0){
                int i=in.read(tmp, 0, 1024);
                if(i<0)break;
                System.out.print(new String(tmp, 0, i));
              }
              if(channel.isClosed()){
                System.out.println("exit-status: "+channel.getExitStatus());
                break;
              }
              try{Thread.sleep(1000);}catch(Exception ee){}
            }
            channel.disconnect();
            session.disconnect();
            System.out.println("DONE");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

我想知道如何远程执行gradle命令

1 个答案:

答案 0 :(得分:0)

如果远程计算机上未安装gradle,则需要使用Gradle Wrapper。 gradle包装器是一个类似于你所描述的脚本,它将下载并设置gradle。但是,使用gradle的{​​{1}}命令引用String command = "gradle -v";二进制文件而不是包装器脚本。

要调用包装器脚本,您可能需要使用

gradle

确保您的命令env设置为脚本String command = "./gradlew -v"; 所在的项目基础。