当前位置: 首页 > news >正文

普通java web项目转为maven项目

以前写的老项目,转为maven项目管理,关键是涉及的jar比较多,手动改工作量太大。

项目环境:eclipse、jdk8、jetty嵌入式启动。

1.创建一个新的maven项目。

2.拷贝源码。

将老项目src目录下的源码拷贝到新项目的src/main/java目录下。

3.拷贝WebRoot等其他文件夹。

4.(关键)配置pom.xml。添加相应的依赖。

原有的jar如果要手动配置maven依赖的话,涉及到170多个jar,工作量大,而且很多jar都比较旧了,相关依赖可能比较难找,并且容易导致jar冲突或者版本不一致导致系统不问题。

针对上面问题,我的解决办法是直接将需要的jar重新安装到maven仓库去,统一这些jar的groupId,然后在生成对应的pom.xml依赖配置。具体实现参考MavenUtil.java 

package com.xpl.util;import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/**** Maven工具包* @author xpl 2024-10-19*/
public class MavenUtil {/**** 执行cmd命令* @param command  如  cmd /c systeminfo* @return*/public static String cmd(String[] command, String charsetname ) {charsetname = charsetname == null ? "GBK" : charsetname;Runtime runtime = Runtime.getRuntime();InputStream is = null;ByteArrayOutputStream byteArrayOutputStream = null;try {Process process = runtime.exec(command);is = process.getInputStream();byteArrayOutputStream = new ByteArrayOutputStream();byte[] buff = new byte[2048];int len;while((len = is.read(buff)) != -1) {byteArrayOutputStream.write(buff, 0, len);}return  byteArrayOutputStream.toString(charsetname);} catch (IOException e) {e.printStackTrace();}finally {if(byteArrayOutputStream != null){try {byteArrayOutputStream.close();} catch (IOException e) {e.printStackTrace();}}if(is != null){try {is.close();} catch (IOException e) {e.printStackTrace();}}}return null;}/**** jar安装到本地maven仓库* @param filePath* @param groupId* @param artifactId* @param version* @return*/public static boolean installJar(String filePath, String groupId, String artifactId, String version){String command = "mvn install:install-file -Dfile="+filePath+"    -DgroupId="+groupId+"   -DartifactId="+artifactId+"      -Dversion="+version+"    -Dpackaging=jar";boolean flag = true;String rs = "";try{rs = cmd(new String[]{"cmd", "/C", command}, "GBK");
//			System.out.println(rs);if(rs != null && rs.indexOf("BUILD SUCCESS")>= 0){flag = true;}else{flag = false;}}catch (Exception e) {flag = false;e.printStackTrace();}if(flag){System.out.println("安装成功:" +artifactId);}else{System.err.println("安装失败:" +artifactId);System.err.println(rs);}return flag;}/**** 批量安装jar* @param list* @return*/public static boolean installJars(List<String> list){for (String string : list) {String filePath = "F:\\workspace\\javaFX\\xpl\\" + string.replace('/', '\\');String groupId = "xpl.jfinal";String artifactId = string.substring(string.lastIndexOf('/')+1, string.lastIndexOf('.'));String version = "1.0.0";installJar(filePath, groupId, artifactId, version);}return true;}/**** 获取普通java web项目的依赖jar包列表。* @param classpath* @return*/public static List<String> getJars(String classpath){File oldFile = new File(PathUtil.getProjectPath() + "/.classpath");FileInputStream fis = null;InputStreamReader isr = null;BufferedReader br  = null;List<String> list = new ArrayList<String>();try{//文件读取流fis= new FileInputStream(oldFile);isr=new InputStreamReader(fis, "UTF-8");br = new BufferedReader(isr);String line = "";String[] arrs = null;while ((line=br.readLine())!=null) {if(line.indexOf("kind=\"lib\"") != -1 ){list.add(RegexUtil.findString(line, "path=\"(.*?)\"", 1));}}} catch (IOException e) {e.printStackTrace();}finally {close(br);close(isr);close(fis);}return list;}/**** 生成maven的依赖配置* @param list* @return*/public static String getPOM(List<String> list){StringBuffer sb = new StringBuffer();for (String string : list) {String groupId = "xpl.jfinal";String artifactId = string.substring(string.lastIndexOf('/')+1, string.lastIndexOf('.'));String version = "1.0.0";sb.append("<dependency>\n");sb.append("	<groupId>"+groupId+"</groupId>\n");sb.append("	<artifactId>"+artifactId+"</artifactId>\n");sb.append("	<version>"+version+"</version>\n");sb.append("</dependency>\n");}return sb.toString();}public static void close(Closeable obj){if(obj != null){try {obj.close();} catch (IOException e) {e.printStackTrace();}}}public static void main(String[] args) {//安装到本地String filePath = "${项目路径}\\.classpath";installJars(getJars(filePath ));//生成maven依赖配置System.out.println(getPOM(getJars(filePath )));}}

先安装jar到本地maven,然后将生成的依赖配置拷贝的新项目的pom.xml中。

5.测试。

启动测试正常。


http://www.mrgr.cn/news/53646.html

相关文章:

  • spring源码拓展点3之addBeanPostProcesser
  • C++类和对象 - 下【匿名对象,友元,static成员】
  • 小白对时序数据库的理解
  • 【二刷hot100】day 4
  • 《使用Gin框架构建分布式应用》阅读笔记:p108-p126
  • 医院信息化与智能化系统(5)
  • 原地移除数组中所有的元素val 含源码
  • 如何快速学会盲打
  • 2024.09.27校招 实习 内推 面经
  • 5步轻松上手!零基础也能掌握Go语言编程
  • 明日周刊-第23期
  • 性能测试中性能调优的基本原则有哪些
  • 大模型(LLM)推理体系全览
  • SFT、RLHF、DPO、IFT —— LLM 微调的进化之路_如何搭建自己的dpo
  • Cesium for UE-04-一些说明
  • Docker本地镜像发布到阿里云镜像服务的简易指南
  • 从 PDF 表到见解:在 RAG 中解析 PDF 的另一种方法
  • 基于51单片机的电子时钟数码管显示proteus仿真
  • 正则化-权重衰减
  • Vue Google 广告的配置
  • 数据库原理与应用(基于MySQL):实验六数据查询
  • rpm 命令
  • PPT自动化:如何判断PPT中的shape类型(python-pptx中常见shape类型及其代码速查表)
  • 【学习笔记】理解 C++ 中 reinterpret_cast 和 C 风格类型转换的区别
  • 动态分层强化学习(DHRL)算法详解
  • 西门子嵌入式面试题及参考答案(万字长文)