给定从 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”功能)。
我的尝试:
- 提取 Fat Jar。
- 使用
mvn install:install-file -Dfile=<path-to-file>
将库一个一个地安装到本地Maven 存储库(c:\Users\[username]\.m2\repository\
)。然后,我可以对主要源代码执行 mvn package
,假设所有需要的库都在本地 Maven 存储库中可用;因此,无需从互联网上获取它。
- 但是我遇到了很多问题,例如'groupId' 丢失。
您需要install:install-file
将缺少的库添加到您的本地存储库,并在安装时正确设置 GAV(groupId、artifactId、版本)。
一般来说,我还会检查是否有比修补库更简单的方法来解决您的问题。
有一个 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”功能)。
我的尝试:
- 提取 Fat Jar。
- 使用
mvn install:install-file -Dfile=<path-to-file>
将库一个一个地安装到本地Maven 存储库(c:\Users\[username]\.m2\repository\
)。然后,我可以对主要源代码执行mvn package
,假设所有需要的库都在本地 Maven 存储库中可用;因此,无需从互联网上获取它。 - 但是我遇到了很多问题,例如'groupId' 丢失。
您需要install:install-file
将缺少的库添加到您的本地存储库,并在安装时正确设置 GAV(groupId、artifactId、版本)。
一般来说,我还会检查是否有比修补库更简单的方法来解决您的问题。