1. 程式人生 > >maven命令列打包並上傳linux

maven命令列打包並上傳linux

package com.kk.demo.exe;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.util.Properties;

import org.junit.Test;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;

import ch.ethz.ssh2.StreamGobbler;

/**
 * @author kk
 * 
 */
public class ExecuteCMD {
	
	
	public static void main(String[] args) {
		ExecuteCMD c = new ExecuteCMD();
		c.exeMaven();
		c.connectLiux();
	} 
						
					

	
	/**
	 * 執行maven打包命令
	 * cd到需要打包專案的pom.xml檔案下執行:
	 * mvn clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true 
	 * Clean跳過測試直接install
	 */
	@Test
	public void exeMaven(){
		String CMD = "cmd /c d: & cd D:\\MyWorkspace\\dlm\\dlm-admin & mvn clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true";
		try {
			Process process = Runtime.getRuntime().exec(CMD);
			BufferedReader br  = new BufferedReader(
											new InputStreamReader(process.getInputStream(),"GBK"));
			
			String line = "";
			while((line = br.readLine()) != null){
				System.out.println(line);
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	
	
	/**
	 * 連線linux
	 * 執行 上傳war包 ,部署, 並檢視tomcat輸出
	 */
	@Test
	public  void connectLiux(){
		try {
			//連線
			JSch jsch = new JSch();
			Session session = jsch.getSession("使用者名稱","IP地址",埠);
			session.setPassword("密碼");
			Properties config = new Properties();
			config.put("StrictHostKeyChecking", "no");
			session.setConfig(config);
			session.setTimeout(3000 * 60 *6 );
			session.connect();
			
			
			//上傳檔案
			String scr = "C:\\Users\\VULCAN\\Desktop\\00000.txt";
			String dst = "/javadata/XAJAVA/tomcat/document/war/00000.txt";
			ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");
			channelSftp.connect();
			//上傳
			channelSftp.put(scr, dst, ChannelSftp.OVERWRITE);
			channelSftp.quit();
			
			
			
			StringBuilder CMD = new StringBuilder();
			//跳轉目錄
			CMD.append("cd /javadata/XAJAVA/tomcat/document/war &&");
			//執行shell指令碼
			//CMD.append(" sh dlm.sh &&");
			CMD.append(" cd /javadata/XAJAVA/tomcat/dlm-tomcat/logs &&");
			//檢視tomcat輸出
			CMD.append(" tail -f catalina.out");
			
			//執行命令
			ChannelExec channelExec = (ChannelExec) session.openChannel("exec");
			channelExec.setCommand(CMD.toString());
			channelExec.setInputStream(null);
			channelExec.setErrStream(System.err);
			channelExec.connect();
			InputStream in = channelExec.getInputStream();
			BufferedReader reader = new BufferedReader(new InputStreamReader(in,Charset.forName("UTF-8")));
		
			//輸出返回
			String buf = "";
			while((buf = reader.readLine()) != null){
				System.out.println(buf);
			}
			
			//關閉
			reader.close();
			channelExec.disconnect();
		
		} catch (JSchException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (SftpException e) {
			e.printStackTrace();
		}
	}
	
}

依賴jar
<dependency>
	    <groupId>com.jcraft</groupId>
	    <artifactId>jsch</artifactId>
	    <version>0.1.54</version>
</dependency>