我有一个基于 Ant 的构建系统,我想我可能会编写一个 python 脚本来测试目录层次结构中的所有编译/jarred 类,以避免在编译时与运行时使用不同版本可能出现的问题。
天真地,该脚本最初检查了在各种jar、war和ear文件中找到的所有类的sha256哈希,如果发现相同的类具有不同的哈希,则会抱怨。然而,这会产生太多的误报。
例如,类org.apache.commons.collections.FastHashMap在commons-beanutils-1.8.0.jar和commons-collections-2.1.1.jar中都有不同的哈希值。显然这个标准太严格了。然而,最后,我可以产生相同哈希的唯一方法是执行以下操作:
javap commons-beanutils-1.8.0.jar.exploded/org/apache/commons/collections/FastHashMap.class | sort | grep -v Compiled\ from\ | sha256sum -
javap commons-collections-2.1.1.jar.exploded/org/apache/commons/collections/FastHashMap.class | sort | grep -v Compiled\ from\ | sha256sum -
这些确实是一样的,但是这个(尤其是grep -v和sort)非常不令人满意。是否有更好的方法来测试目录层次结构中的所有类是否兼容以避免意外的运行时问题?