修改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这个压缩软件,其他软件原理也一样。

如果第一种方式不行,那就用第二种方案。


© 2009-2020 Zollty.com 版权所有。渝ICP备20008982号