`
knight_black_bob
  • 浏览: 855075 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

maven jar 包 自动统一去重升级

    博客分类:
  • java
阅读更多

 



 



  

 

 

 

package java2015.java09.javatest;

import java.io.File;
import java.io.ObjectInputStream.GetField;
import java.util.HashMap;
import java.util.Map;

public class Test {

	final static String targetFilePath = "C:/Users/Administrator/Desktop/fa-非maven-可启动-lib/";
	final static String sourceFilePath = "C:/Users/Administrator/Desktop/fa-maven-lib/";
	final static String resultFilePath = "C:/Users/Administrator/Desktop/fa-带版本-非maven-lib/";
	static Map<String, String> targetFilemap = new HashMap<String, String>();
	static Map<String, String> sourceFilemap = new HashMap<String, String>();
	static Map<String, String> resultFilemap = new HashMap<String, String>();

	public static void main(String[] args) {

		File file1 = new File(targetFilePath);
		File[] targetFileList = file1.listFiles();
		for (File targetFile : targetFileList) {
			String targetFileName = targetFile.getName();
			targetFileName = targetFileName.replace(".jar", "");
			number(targetFilemap, targetFileName);
		}

		File file2 = new File(sourceFilePath);
		File[] sourceFileList = file2.listFiles();
		for (File sourceFile : sourceFileList) {
			String sourceFileName = sourceFile.getName();
			sourceFileName = sourceFileName.replace(".jar", "");
			number(sourceFilemap, sourceFileName);
		}

		result(resultFilemap, targetFilemap, sourceFilemap);

		for (String jarKey : resultFilemap.keySet()) {
			String selectedNum = resultFilemap.get(jarKey);
			String[] selectedNumArr = selectedNum.split("#");

			String fileName = null;
			if ("1".equals(selectedNumArr[0])) {
				if (selectedNumArr.length == 1 || "".equals(selectedNumArr[1])) {
					fileName = jarKey + ".jar";
				} else {
					fileName = jarKey + "-" + selectedNumArr[1] + ".jar";
				}
				FileUtil.copyFile(targetFilePath + fileName, resultFilePath
						+ fileName);
			} else {
				if (selectedNumArr.length == 1 || "".equals(selectedNumArr[1])) {
					fileName = jarKey + ".jar";
				} else {
					fileName = jarKey + "-" + selectedNumArr[1] + ".jar";
				}
				FileUtil.copyFile(sourceFilePath + fileName, resultFilePath
						+ fileName);
			}
		}
	}

	static void result(Map<String, String> map1, Map<String, String> map2,
			Map<String, String> map3) {
		System.out.printf("%30s %20s %20s", "jar包名","非maven包" ,"maven包");
		System.out.println();
		for (String jarKey : map2.keySet()) {
			String targetNum = map2.get(jarKey);
			String sourceNum = map3.get(jarKey);
			System.out.printf("%30s %20s %20s", jarKey,targetNum ,sourceNum);
			String selectedNum = selectedNum(targetNum, sourceNum);
			map1.put(jarKey, selectedNum);
		}
	}

	// 1&1.1.0-cdn
	// 1 从 target取 ;2 从source取
	static String selectedNum(String targetNum, String sourceNum) {
		String temp="";
		if (targetNum == null || targetNum == "" || sourceNum == null
				|| sourceNum == "") {
			if (targetNum == null || targetNum == "") {
				temp= 2 + "#" + sourceNum;
			} else {
				temp= 1 + "#" + targetNum;
			}
		} else {
			if (targetNum.compareTo(sourceNum) < 0) {
				System.out.printf("%30s",  "maven 比  非maven 版本高");
				temp= 2 + "#" + sourceNum;
			} else {
				temp= 1 + "#" + targetNum;
			}
		}
		System.out.println();
		return temp;
	}

	static void number(Map<String, String> map, String fileName) {
		int i = 0;
		int index = 0;
		boolean flag = false;

		if (!fileName.contains("-")) {
			index = fileName.length();
			flag = true;
		}
		char[] charArr = fileName.toCharArray();

		while (!flag && i < charArr.length) {

			char achar = charArr[i];
			String astring = String.valueOf(achar);

			if (astring.contains("-")) {
				char achar2 = charArr[i + 1];
				String astring2 = String.valueOf(achar2);
				try {
					int aint2 = Integer.parseInt(astring2);
					index = i;
					break;
				} catch (Exception e) {
					i++;
					continue;
				}

			}
			i++;
			if (i == fileName.length()) {
				index = fileName.length();
				flag = true;
			}
		}
		char[] resultName = null;
		char[] resultNum = null;
		if (flag) {
			resultName = new char[index];
			System.arraycopy(charArr, 0, resultName, 0, index);
			resultNum = new char[0];
		} else {
			resultName = new char[index];
			System.arraycopy(charArr, 0, resultName, 0, index);

			resultNum = new char[charArr.length - index - 1];
			System.arraycopy(charArr, index + 1, resultNum, 0, charArr.length
					- index - 1);
		}
		// System.out.println( String.valueOf(resultName )+"|"+String.valueOf(resultNum)+"|");
		map.put(String.valueOf(resultName), String.valueOf(resultNum));
	}
}

 

 

package java2015.java09.javatest;

 

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;


import org.apache.commons.io.FileUtils; 

/**
 * 与文件相关的工具类库。<br>
 * 其内容包括文件/目录更名,文件/目录删除,文件/目录移动。
 * 
 * @author baoyou  curiousby@163.com
 */
public class FileUtil
{ 

	public static boolean copyDirectory(String oldPath, String newPath)
	{
		File b = new File(newPath);
		File a = new File(oldPath);
		try
		{
			FileUtils.copyDirectoryToDirectory(a, b);
		}
		catch (IOException e)
		{
			return false;
		}
		return true;
	}

	public static boolean moveDirectory(String oldPath, String newPath)
	{
		File b = new File(newPath);
		File a = new File(oldPath);
		return a.renameTo(b);
	}

	/**
	 * 将文件oldFile移为newFile
	 * 
	 * @param oldFile
	 * @param newFile
	 * @return
	 */
	public static boolean moveFile(String oldFile, String newFile)
	{
		File a = new File(oldFile);
		File b = new File(newFile);
		return moveFile(a, b);
	}

	/**
	 * 将文件移至指定目录,文件名不变
	 * 
	 * @param file
	 * @param path
	 * @return
	 */
	public static boolean moveFile(File file, String path)
	{
		File tmp = new File(path);
		if (!tmp.exists())
			tmp.mkdirs();
		File b = new File(path + File.separatorChar + file.getName());
		return moveFile(file, b);
	}

	/**
	 * 将文件移至指定目录,文件名不变
	 * 
	 * @param file
	 * @param path
	 * @return 移动是否成功
	 */
	public static boolean moveFile(File srcFile, File dstFile)
	{
		return srcFile.renameTo(dstFile);
	}

	public static boolean deleteDirectory(String sPath)
	{
		// 如果sPath不以文件分隔符结尾,自动添加文件分隔符
		if (!sPath.endsWith(File.separator))
		{
			sPath = sPath + File.separator;
		}
		File dirFile = new File(sPath);
		// 如果dir对应的文件不存在,或者不是一个目录,则退出
		if (!dirFile.exists() || !dirFile.isDirectory())
			return false;
		return deleteDirectory(dirFile);
	}

	public static boolean copyFile(String oldPath, String newPath)
	{
		boolean bool = false;
		File newFile = new File(newPath);
		InputStream inStream = null;
		OutputStream outStream = null;
		try
		{
			// 复制文件(保留上传的原文件,新的文件名为id_name.zip)
			inStream = new FileInputStream(oldPath);
			newFile.createNewFile();
			outStream = new FileOutputStream(newPath);
			byte[] by = new byte[2048];
			while (inStream.available() > 0)
			{
				int i = inStream.read(by);
				outStream.write(by, 0, i);
			}
		}
		catch (Exception e)
		{
			System.out.println(e.getMessage());
		}
		finally
		{
			if (null != inStream)
			{
				try
				{
					inStream.close();
				}
				catch (IOException e)
				{

				}
			}
			if (null != outStream)
			{
				try
				{
					outStream.flush();
				}
				catch (IOException e)
				{
					System.err.println(e.getCause());
				}
				try
				{
					outStream.close();
				}
				catch (IOException e)
				{
					System.err.println(e.getCause());
				}
				bool = true;
				System.out.println("复制完毕! ");
			}
		}
		return bool;
	}

	public static boolean deleteDirectory(File f)
	{
		boolean flag = true;
		// 删除文件夹下的所有文件(包括子目录)
		File[] files = f.listFiles();
		for (int i = 0; i < files.length; i++)
		{
			// 删除子文件
			if (files[i].isFile())
			{
				flag = deleteFile(files[i].getAbsolutePath());
				if (!flag)
					break;
			} // 删除子目录
			else
			{
				flag = deleteDirectory(files[i].getAbsolutePath());
				if (!flag)
					break;
			}
		}
		if (!flag)
			return false;
		// 删除当前目录
		if (f.delete())
		{
			return true;
		}
		else
		{
			return false;
		}
	}

	public static boolean deleteFile(String sPath)
	{
		File file = new File(sPath);
		if (file.isFile() && file.exists())
		{
			return file.delete();
		}
		return false;
	}

 

	/**
	 * 装输入流写入文件中
	 * 
	 * @param is
	 * @param f
	 * @return
	 */
	public static boolean writeFile(InputStream is, File f)
	{
		FileOutputStream fos = null;
		try
		{
			fos = new FileOutputStream(f);
			byte[] buf = new byte[10240];
			int i;
			while ((i = is.read(buf)) > 0)
				fos.write(buf, 0, i);
		}
		catch (IOException e)
		{
			e.printStackTrace();
			return false;
		}
		finally
		{
			if (is != null)
				try
				{
					is.close();
				}
				catch (IOException e)
				{
				}
			if (fos != null)
				try
				{
					fos.close();
				}
				catch (IOException e)
				{
				}
		}
		return true;
	}
}

 

 

 

 代码 之前 用的是 string 转字符串 ,后来发现这也太麻烦了,之后转为 字符串匹配。

 代码修改后 ,,,,,

 

package java2015.java09.javatest;

import java.io.File;
import java.io.ObjectInputStream.GetField;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


public class Test2 {

	final static String targetFilePath = "C:/Users/Administrator/Desktop/fa-非maven-可启动-lib/";
	final static String sourceFilePath = "C:/Users/Administrator/Desktop/fa-maven-lib/";
	final static String resultFilePath = "C:/Users/Administrator/Desktop/fa-带版本-非maven-lib/";
	static Map<String, String> targetFilemap = new HashMap<String, String>();
	static Map<String, String> sourceFilemap = new HashMap<String, String>();
	static Map<String, String> resultFilemap = new HashMap<String, String>();

	public static void main(String[] args) {

		File file1 = new File(targetFilePath);
		File[] targetFileList = file1.listFiles();
		for (File targetFile : targetFileList) {
			String targetFileName = targetFile.getName();
			targetFileName = targetFileName.replace(".jar", "");
			number(targetFilemap, targetFileName);
		}

		File file2 = new File(sourceFilePath);
		File[] sourceFileList = file2.listFiles();
		for (File sourceFile : sourceFileList) {
			String sourceFileName = sourceFile.getName();
			sourceFileName = sourceFileName.replace(".jar", "");
			number(sourceFilemap, sourceFileName);
		}

		result(resultFilemap, targetFilemap, sourceFilemap);

		for (String jarKey : resultFilemap.keySet()) {
			String selectedNum = resultFilemap.get(jarKey);
			String[] selectedNumArr = selectedNum.split("#");

			String fileName = null;
			if ("1".equals(selectedNumArr[0])) {
				if (selectedNumArr.length == 1 || "".equals(selectedNumArr[1])) {
					fileName = jarKey + ".jar";
				} else {
					fileName = jarKey + "-" + selectedNumArr[1] + ".jar";
				}
				FileUtil.copyFile(targetFilePath + fileName, resultFilePath
						+ fileName);
			} else {
				if (selectedNumArr.length == 1 || "".equals(selectedNumArr[1])) {
					fileName = jarKey + ".jar";
				} else {
					fileName = jarKey + "-" + selectedNumArr[1] + ".jar";
				}
				FileUtil.copyFile(sourceFilePath + fileName, resultFilePath
						+ fileName);
			}
		}
	}

	static void result(Map<String, String> map1, Map<String, String> map2,
			Map<String, String> map3) {
		System.out.printf("%30s %20s %20s", "jar包名","非maven包" ,"maven包");
		System.out.println();
		for (String jarKey : map2.keySet()) {
			String targetNum = map2.get(jarKey);
			String sourceNum = map3.get(jarKey);
			String targetNumSatring  = targetNum==null?"非maven不存在":targetNum==""?"没有版本号":targetNum;
			String sourceNumSatring  = sourceNum==null?"maven不存在":sourceNum==""?"没有版本号":sourceNum;	
			System.out.printf("%30s %20s %20s", jarKey,targetNumSatring,sourceNumSatring);
			String selectedNum = selectedNum(targetNum, sourceNum);
			map1.put(jarKey, selectedNum);
		}
	}

	// 1&1.1.0-cdn
	// 1 从 target取 ;2 从source取
	static String selectedNum(String targetNum, String sourceNum) {
		String temp="";
		if (targetNum == null || targetNum == "" || sourceNum == null || sourceNum == "") {
			if (sourceNum == null || sourceNum == "") {
				temp= 1 + "#" + targetNum;
			}else{
				temp= 2 + "#" + sourceNum;
			}
		} else {
			if (targetNum.compareTo(sourceNum) < 0) {
				System.out.printf("%30s",  "maven比非maven版本高");
				temp= 2 + "#" + sourceNum;
			}else if (targetNum.compareTo(sourceNum) == 0) {
				System.out.printf("%30s",  "版本相同");
				temp= 1 + "#" + targetNum;
			}else {
				System.out.printf("%30s",  "非maven比maven版本高");
				temp= 1 + "#" + targetNum;
			}
		}
		System.out.println();
		return temp;
	}

 
	static void number(Map<String, String> map, String fileName) {
		Pattern p = Pattern.compile("\\-\\d"); // 正则表达式 
		Matcher m = p.matcher(fileName); // 操作的字符串
		boolean aboolean = m.find();
		String resultName="";
		String resultNum ="";
		if (aboolean) {
			 int start = m.start(0);
			 resultName= fileName.substring(0, start);
			 resultNum =  fileName.substring(start+1, fileName.length());
		}else{
			resultName = fileName;
			resultNum ="";
		}
		map.put( resultName ,  resultNum );
	}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

  • 大小: 287.5 KB
  • 大小: 443 KB
分享到:
评论

相关推荐

    mavenjar包

    标题中的 "mavenjar 包" 指的是使用 Maven 构建的 JAR 文件,通常包含了一个完整的Java项目,包括所有依赖的库。这种 JAR 文件可以被直接运行,或者作为其他应用的依赖来使用。 描述中提到的步骤,是在本地环境中...

    maven jar包下载地址

    通过解析`pom.xml`,Maven会自动下载并管理项目所需的jar包,这些依赖库都存储在用户的`.m2`仓库目录下。 此外,Maven还提供了强大的生命周期和构建阶段,如`clean`(清理项目)、`compile`(编译源代码)、`test`...

    maven jar包直接根据pom下载

    "maven jar包直接根据pom下载"这一主题涉及的是如何利用Maven的特性,通过修改POM(Project Object Model)文件来自动下载项目所需的jar包。 POM.xml是Maven项目的配置文件,它定义了项目的结构、依赖、插件和其他...

    JSONObject相关jar包和maven管理jar包

    **标题解析:** 标题"JSONObject相关jar包和maven管理jar包"暗示了我们...总结,这个主题涵盖了JSON数据处理的基本概念、JSONObject库的使用,以及Java项目中依赖管理的实践,尤其是通过Maven进行jar包的自动化管理。

    Springboot 打Jar包,Maven完美解决本地Jar包自动打入Springboot Jar包中

    ### Springboot 打Jar包,Maven完美解决本地Jar包自动打入Springboot Jar包中 #### 背景介绍 随着微服务架构的流行,Spring Boot 成为了开发微服务应用时首选的技术栈之一。它简化了传统的Java Web应用程序的开发...

    spring-boot2.1.14 离线maven jar包

    在描述中提到的"离线maven jar包",指的是在开发环境中没有网络连接时,可以使用的Maven依赖包。Maven是一个项目管理工具,用于构建、管理和部署Java项目。它依赖于中央仓库中的各种jar包来解决项目的依赖关系。然而...

    taobao Diamond 部分maven jar包

    1. **添加依赖**:在Maven的`pom.xml`文件中添加Diamond相关的依赖项,确保在构建过程中自动下载并引入相应的jar包。 2. **配置客户端**:在代码中初始化和配置Diamond客户端,指定服务器地址、数据ID等信息,并...

    maven-JAR包

    POM 还定义了项目依赖关系,Maven 会根据这些依赖关系自动下载所需的 JAR 包,并管理它们之间的版本冲突。 **依赖管理** 在 Maven 中,项目依赖是通过 POM 文件中的 `&lt;dependencies&gt;` 标签来声明的。每个依赖都由...

    maven jar包下载器.zip

    这个“maven jar包下载器.zip”文件可能是一个工具或脚本,旨在自动化从Maven仓库下载所需jar包的过程。它可能会通过解析POM.xml文件,识别项目的所有依赖,并批量下载到本地文件系统,从而极大地提高了开发效率。 ...

    批量导入maven本地jar包

    批量导入maven本地jar包

    maven本地仓库(常用Jar包)

    "maven常用Jar包"指的是在Java开发中频繁使用的第三方库,例如Spring框架、Hibernate ORM、Apache Commons系列库、JSON解析库如Jackson或Gson,以及测试框架JUnit等。这些库已经被广泛地接受并应用在各种项目中,...

    maven冲突jar包清理脚本

    构建maven工程时pom.xml中引入依赖时有红色字体,setting处理了,也将jar包的版本号都试了一遍,还是没解决,后来请教大牛,原来是没连网,maven工程加载了一部分jar包,连网之后自动下载的jar包跟之前的冲突,用这...

    maven2 jar包

    maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包 maven2 jar包

    Maven中主要jar包集合

    Maven会自动下载并管理这些jar包,避免了手动搜索和添加的麻烦。这就是描述中提到的“用maven直接导入”。 Maven的生命周期包括清理、编译、测试、打包、验证、部署等阶段,每个阶段都有相应的插件执行具体任务。...

    maven jar包

    maven-aether-provider-3.2.1-sources.jar maven-antrun-plugin-1.3.jar maven-archiver-2.2.jar maven-artifact-3.2.1-sources.jar maven-assembly-plugin-2.2-beta-5.jar maven-bundle-plugin-1.0.0.jar maven-...

    阿里云maven私服jar包上传和拉取教程

    - 运行`mvn dependency:resolve`或`mvn install`命令,Maven会自动从私服仓库中拉取所需的jar包,并将其安装到本地仓库中供项目使用。 综上所述,通过上述步骤,你可以轻松地在阿里云环境中搭建一个maven私服,并...

    MAVEN下载JAR包修复

    MAVEN下载JAR包时经常下载一半没有完成,如果项目中引用了这些JAR包项目就会无法启动,该工具就是可以扫描这些有问题的jar包并且删除,如果安装了JDK并配置环境变量直接双击运行即可

    Maven自动升级版本号并打包上传的脚本

    本文将详细介绍如何通过编写脚本实现Maven项目的版本号自动升级以及打包上传的过程。 首先,我们要理解Maven的版本管理。在Maven的`pom.xml`文件中,定义了项目的版本号,如`&lt;version&gt;1.0.0-SNAPSHOT&lt;/version&gt;`。...

    maven仓库jar包

    Maven通过配置项目构建的POM.xml文件,能够自动从仓库中下载所需的jar包,极大地简化了项目的构建过程。 在Java开发中,Maven仓库分为本地仓库、远程仓库和中央仓库。本地仓库是Maven在本机上创建的一个存储库,当...

Global site tag (gtag.js) - Google Analytics