关于老项目替换class,jsp,js,html等等文件

目前呆的项目组主要是维护工作,因为项目比较老,很多文件需要一个个替换,有新产品上就经常要这样替换,很烦,就抽空写了个用于替换修改的文件,当然还有不足之处,最后会提下。

package com.test;

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 com.jcraft.jsch.SftpProgressMonitor;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;

public class SftpUtil {
	private ChannelSftp channelSftp;
//  private ChannelExec channelExec;
  private Session session=null;
  private int timeout=60000;

  public SftpUtil(SshConfiguration conf) throws JSchException {
  	System.out.println("try connect to  "+conf.getHost()+",username: "+conf.getUserName()+",password: "+conf.getPassword()+",port: "+conf.getPort());
      JSch jSch=new JSch(); //创建JSch对象
      session=jSch.getSession(conf.getUserName(), conf.getHost(), conf.getPort());//根据用户名,主机ip和端口获取一个Session对象
      session.setPassword(conf.getPassword()); //设置密码
      Properties config=new Properties();
      config.put("StrictHostKeyChecking", "no");
      session.setConfig(config);//为Session对象设置properties
      session.setTimeout(timeout);//设置超时
      session.connect();//通过Session建立连接
  }
  public void download(String src,String dst) throws JSchException, SftpException{
      //src linux服务器文件地址,dst 本地存放地址
      channelSftp=(ChannelSftp) session.openChannel("sftp");
      channelSftp.connect();
      channelSftp.get(src, dst);
      channelSftp.quit();
  }
  public void upLoad(String src,String dst) throws JSchException,SftpException{
      //src 本机文件地址。 dst 远程文件地址
      channelSftp=(ChannelSftp) session.openChannel("sftp");
      channelSftp.connect();
      channelSftp.put(src, dst);
      System.out.println("upload file success!");
      channelSftp.quit();
  }
  public void close(){
      session.disconnect();
  }
  public static void main(String[] args) throws IOException {
		/**
		 * *********上传准备文件***************
		 */
  	SshConfiguration configuration=new SshConfiguration();
  	configuration.setHost("你的ip地址");
      configuration.setUserName("你的连接用户名");
      configuration.setPassword("你的连接密码");
      configuration.setPort(22);//端口一般都是22
		File file = new File("E:\\uploadFile\\upload.txt");//需要上传的文件存放于txt里后面按行读取
		BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
		String srcinput = null;
		try {
			while ((srcinput = bufferedReader.readLine()) != null) {//按行读取
				SFTPUtils sftp=new SFTPUtils(configuration);
				String[] strs = srcinput.split("\\.");
				String type = strs[strs.length - 1];
				System.out.println("type:" + type);
				// 判断文件是class还是jsp或js
				String dst1 = "你的应用部分路径";//后面会根据读入的做String的一些处理后拼接成上传的完整位置
				if ("class".equals(type)) {
					String src = srcinput.replace("\\", "\\\\");// 本地上传文件路径
					System.out.println("src:" + src);
					String[] strs1 = srcinput.split("\\\\");
					if ("某项目1".equals(strs1[3])) {// 属于某项目1目录下
						StringBuffer sb = new StringBuffer(dst1);
						sb.append("某项目1/");
						String last = srcinput.substring(srcinput
								.indexOf("WEB-INF"));
						String last1 = last.replace("\\", "/");
						String[] last1str = last1.split("/");
						String str2 = last1str[last1str.length - 1];
						String str3 = last1.substring(0, last1.indexOf(str2) - 1);
						sb.append(str3);
						String dst = sb.toString();
						System.out.println("dst:" + dst);
						sftp.upLoad(src, dst);
					}
					if ("某项目2".equals(strs1[3])) {// 属于某项目2目录下
						StringBuffer sb = new StringBuffer(dst1);
						sb.append("某项目2/");
						String last = srcinput.substring(srcinput
								.indexOf("WEB-INF"));
						String last1 = last.replace("\\", "/");
						String[] last1str = last1.split("/");
						String str2 = last1str[last1str.length - 1];
						String str3 = last1.substring(0, last1.indexOf(str2) - 1);
						sb.append(str3);
						String dst = sb.toString();
						System.out.println("dst:" + dst);
						sftp.upLoad(src, dst);
					}
					if ("某项目3".equals(strs1[3])) {// 属于某项目3目录下
						StringBuffer sb = new StringBuffer(dst1);
						sb.append("某项目3/");
						String last = srcinput.substring(srcinput
								.indexOf("WEB-INF"));
						String last1 = last.replace("\\", "/");
						String[] last1str = last1.split("/");
						String str2 = last1str[last1str.length - 1];
						String str3 = last1.substring(0, last1.indexOf(str2) - 1);
						sb.append(str3);
						String dst = sb.toString();
						System.out.println("dst:" + dst);
						sftp.upLoad(src, dst);
					}
				}
				if ("jsp".equals(type) || "js".equals(type)) {// 该项目jsp和js放一起,一起判断且只在某项目1下
					String src = srcinput.replace("\\", "\\\\");// 本地上传文件路径
					System.out.println("src:" + src);
					String[] strs1 = srcinput.split("\\\\");
					if ("某项目1".equals(strs1[3])) {// 属于某项目1目录下
						StringBuffer sb = new StringBuffer(dst1);
						sb.append("某项目1/");
						String last = srcinput.substring(srcinput.indexOf("view"));
						String last1 = last.replace("\\", "/");
						String[] last1str = last1.split("/");
						String str2 = last1str[last1str.length - 1];
						String str3 = last1.substring(0, last1.indexOf(str2) - 1);
						sb.append(str3);
						String dst = sb.toString();
						System.out.println("dst:" + dst);
						sftp.upLoad(src, dst);
					}
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			bufferedReader.close();
		}
	}
}

  这种比较定制化,因为每个项目统一的格式不一样,有些js等静态文件喜欢放static或者直接建个js文件目录,所以老项目就各自根据自己的项目定制化下吧。。一劳永逸哈哈哈,当然原本是想自己修改了什么文件就自动捕获上传,但是还不清楚如何获取自己修改的文件所以没有实现,就用了在txt里写文件全路径的方式按行读取逐个上传的办法,,也还有很多地方可以完善,如果有大佬知道怎么获取文件被自己修改,请说下~

原文地址:https://www.cnblogs.com/codecola/p/11057291.html

时间: 2024-11-06 09:52:46

关于老项目替换class,jsp,js,html等等文件的相关文章

【翻译】Microsoft Ajax Minifier 快速使用指南(与VS集成使用) 编译后直接压缩项目的JS或CSS文件

网上找了好久终于找到一个能跟VS集成使用的JS和CSS压缩工具,因为害怕忘记,所以给转发过来,顺便翻译一下,大学那会儿学的英语基本上都已经还给老师了,所以翻译的不太好,不过能看懂就成,对吧? 原文地址:http://www.asp.net/ajaxlibrary/AjaxMinQuickStart.ashx 一.在命令行中使用 在下载安装完成Microsoft Ajax Minifier之后,你就可以以命令的方式使用它了.单击“开始”——“所有程序”——“Microsoft Ajax Minif

使用Maven构建Java Web项目时,关于jsp中引入js、css文件路径问题。

今天有点闲,自己动手搭建一个Java Web项目,遇到jsp中引入js.css文件时路径不正确的问题,于是在网上查阅了很多资料,最终都无法解决问题,于是,上stackoverflow找到了解决方法,这里不得不吐槽一下国内资料的可信度,不说了,以后遇到问题尽量还是google吧,花点钱买个vpn值了,生命有限,节约时间. 下面记录下解决方法吧: 首先,确保jsp引入了jstl:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" pr

JavaWeb项目笔记包括jsp的用法selevt,HTML5

-------------------<认识HTML5>----------------- 1 <>生成的快捷键 是table键 ctrl+D是直接复制一行 2 <h1>-<h6> 标题 字体由大到小 <p> 段落 <br> 换行标签 <hr> 水平线标签 <em> 斜体 <strong> 字体加粗 ../ 返回上一级目录 > 大于号 < 小于号   空格 " 引号"

[工具篇]eclipse 中设置 Java/JSP/JS/HTML/CSS 智能提示

Visual Studio 2010 中的智能提示很好用,在eclipse中是否也可以通过设置使得java代码文件.jsp文件.html文件.css文件.js文件时也能有这样方便的智能提示呢?应该是有的: 1.设置java代码智能提示 1)打开eclipse→Windows→Preferences→Java→Editor→Content Assist 2)修改Auto Activation triggers for java的值为:zjava   点击apply按钮.(zjava主要是用在后面替

Java Web学习(19):阶段项目之使用JSP+JavaBean完成用户登录

Model1简介 Java Web应用程序的开发总体上来说有两个模型就是Model1和Model2.Model1模型出现前,整个Web应用 的情况:几乎全部由JSP页面组成,JSP页面接收处理客户端请求,对请求处理后直接做出响应.这样的弊端显露无 疑:在界面层充斥着大量的业务逻辑的代码和数据访问层的代码,Web程序的可扩展性和可维护性特别差. JavaBean的出现可以使JSP页面中使用JavaBean封装的数据或者调用JavaBean的业务逻辑代码,这样大大提高 了程序的可维护性. Model

ssh老项目回顾

搭建开发环境: 1.安装myeclipse,设置编译器快捷方式参考(http://www.blogjava.net/314508313/archive/2011/11/07/363040.html) 2.安装jdk 3.安装tomcat,发现myeclipse的自带的好用 导入2011年写的一个SSHDemo,里边包含了登陆,订单等简单的逻辑. 太久没用操作,磕磕碰碰的把项目跑起来,发现有很多报错.还在看书加实践熟悉整个SSH框架. 问题: 1.jdk环境变量没配置,项目启动报错 2.发现没有数

使用Maven创建Web项目后,jsp引入静态文件提示报错。JSP 报错:javax.servlet.ServletException cannot be resolved to a type

使用Maven创建Web项目后,jsp引入静态文件提示报错. 错误提示:javax.servlet.ServletException cannot be resolved to a type 错误如下图: 解决方案: 在Maven的pom文件中引发如下依赖即可: <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <versio

LostRoutes项目日志——在main.js中添加多分辨率适配

初始的Cocos2d-JS项目中的main.js代码的内容为: /** * A brief explanation for "project.json": * Here is the content of project.json file, this is the global configuration for your game, you can modify it to customize some behavior. * The detail of each field is

tomcat work目录的作用就是编译每个项目里的jsp文件为java文件如果项目没有jsp页面则这个项目文件夹为空

最近发现,很多网友喜欢把tomcat的work目录里的东西叫做缓存,其实那不是很恰当,work目录只是tomcat的工作目录,也就是tomcat把jsp转换为class文件的工作目录,这也正是为什么它叫work目录而不是cache目录的原因. jsp,tomcat的工作原理是当浏览器访问某个jsp页面时,tomcat会在work目录里把这个jsp页面转换成.java文件,比如将index.jsp转换为index_jsp.java文件,而后编译为index_jsp.class文件,最后tomcat