# jarjar **Repository Path**: philhao/jarjar ## Basic Information - **Project Name**: jarjar - **Description**: jarjar修复库并可运行 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2024-04-11 - **Last Updated**: 2024-04-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # jarjar #### 介绍 有些项目还是那种很古老的开发方式,通过拷贝jar包的方式来运作,这种项目中大量代码依赖低版本的jar,而需要添加新版本jar 并且版本冲突的时候,可以用该jarjar来修改新版本的包名,使新老版本可以共存,互不影响。 #### 安装教程 切换到该项目根目录下 ,通过maven命令 mvn clean package 直接打包 生成jarjar.jar,在target目录下。 #### 使用说明 更换包名命令: java -jar jarjar.jar process 参数: 1. rulesFile 通过配置该文件来指定替换规则 2. inJar 替换的jar 3. outJar 输出的jar rulesFile有三種指令,分別如下: 1. rule用來取代Package的名称。 rule pattern result 这里主要用这个方式 2.zap用來移除符合名称的Package。 zap pattern 3.keep只会保留符合的Package的名称,其他的則會刪除。如果和zap一起使用,將會在zap执行完之后才執行。 keep pattern 备注: pattern為要比對的字串,可以使用「*」和「**」來表示任意的Package名稱。「*」可以代表一层的Package,「**」可以代表多层的Package。 result為要取代成的字串,可以使用「@1」、「@2」这类的符号表示要使用第几个pattern的「*」或「**」所代表的字串 举个例子: 场景如下 项目中已经有poi低版本3.7,但是想用SXSSFWorkbook导出大数据需要4.0版本,老版本依赖很多不能删。 解决思路: 把新版本4.0种的jar文件改个名字 ![输入图片说明](https://images.gitee.com/uploads/images/2020/0311/230019_6a3a4c69_5160858.png "屏幕截图.png") 创建rulesFile 文件放到 jarjar.jar 相同的目录 rulesFile文件内容如下: rule org.apache.poi.** org.apache.poi4.@1 命令行执行如下三条命令: java -jar jarjar.jar process rulesFile.txt poi-4.0.1.jar newpoi-4.0.1.jar java -jar jarjar.jar process rulesFile.txt poi-ooxml-4.0.1.jar newpoi-ooxml-4.0.1.jar java -jar jarjar.jar process rulesFile.txt poi-ooxml-schemas-4.0.1.jar newpoi-ooxml-schemas-4.0.1.jar 文件夹下生成了3个jar包,拷贝到工程下引用即可。 希望能帮到你。