修改jar包文件内容,Maven重新打包jar
一、网上搜到的下列方案都不行:
1、直接用WinRAR拖拽替换jar包内文件
失败,报错:压缩文件已损坏。
我以前替换成功过,但是启动的时候报错。这种方式可能会伤害到jar包的一些标识。
只适合zip格式的jar文件。可以先用这种方法试试,毕竟最简单。
2、解压jar包,然后使用jar命令(比如jar -uvf)重新打包
失败,能打包,但是以可执行文件(./xxx.jar start)运行时提示:jar: cannot execute binary file
下面是另一种我用过的方案:
1、将jar包文件解压,并且把所有依赖的lib下的jar包统统解压,合并在一起( 包括class、配置文件和其他资源文件);
2、然后全部导入到maven项目的main/resource目录下,删除/META-INF/MANIFEST.MF;
3、然后配置maven pom.xml,如下所示:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <parent> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo</artifactId> <version>0.10.3-SNAPSHOT</version> <relativePath>../pom.xml</relativePath> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>manual-package</artifactId> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.ctrip.framework.apollo.portal.PortalApplication</mainClass> <executable>true</executable> </configuration> </plugin> </plugins> </build> </project>
其原理就是将 jar包内的文件当做resource,再次打包到jar中即可。
建议:
先用第一种方案试,解压出来修改文件,然后把修改后的文件添加到压缩包,覆盖原来的文件,注意这一步添加文件时,压缩级别一定要选择:0-不压缩。我用的是bandizip这个压缩软件,其他软件原理也一样。
如果第一种方式不行,那就用第二种方案。