给定从 Fat Jar 中提取的所有库,如何重建源代码?

Given all libraries extracted from a Fat Jar, how to rebuild the source code?

有一个 Fat Jar,是用 Spring Boot 和 Maven 构建的。可以使用 Java Decompiler 探索其内部结构。注意“lib”节点,它应该包含 运行 Fat Jar 所需的所有库。

Fat Jar 可以作为独立应用程序在 JDK/JRE 1.8 下成功执行。使用 7z,可以提取 Fat Jar 并收集其中嵌入的所有库。

我有用于构建 Fat Jar 的源代码(带有 POM.XML 的 Maven),我想修改它(没有 新的附加库添加)。简单来说,注释几行代码,然后重新编译(又是一个Fat Jar)。

问题: 问题是:重新编译源代码时(命令:mvn package),无法再从 Internet 访问其中一个存储库。有没有明确的方法(一步一步)重新编译?从理论上讲,这应该是可能的,因为我们已经拥有 运行 Jar 所需的所有库(感谢“Fat Jar”功能)。

我的尝试:

  1. 提取 Fat Jar。
  2. 使用mvn install:install-file -Dfile=<path-to-file>将库一个一个地安装到本地Maven 存储库(c:\Users\[username]\.m2\repository\)。然后,我可以对主要源代码执行 mvn package,假设所有需要的库都在本地 Maven 存储库中可用;因此,无需从互联网上获取它。
  3. 但是我遇到了很多问题,例如'groupId' 丢失。

您需要install:install-file将缺少的库添加到您的本地存储库,并在安装时正确设置 GAV(groupId、artifactId、版本)。

一般来说,我还会检查是否有比修补库更简单的方法来解决您的问题。