我当前项目的一名承包商有一个奇怪的习惯,即以 jar 的形式将修复部署到生产中,而不是将固定代码推送到项目的 git 存储库。有数十个 Maven 项目打包到 jar 中
是否有任何实用的方法可以检测并绘制生产中编译的 jar 与存储库中的代码之间的所有差异?目前我可以用IDEA反编译jar并将结果与代码进行比较。反编译的代码在设计上与原始代码不同,因此需要很长时间并且可能会导致错误。
最佳答案
为了检测更改的类,我将编译代码库中的代码,并在刚刚创建的类文件和生产中的类文件之间进行逐类二进制比较。这可以很容易地实现自动化。
但真正的解决方案当然是:你的公司应该有一条规则,即只有从官方 git 存储库中提取的构建服务器(Jenkins、Bamboo 等)进行构建才能投入生产。无一异常(exception)。
关于java - 检测编译的 jar 和 repo 中的代码之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56930172/