我正在尝试确定是否需要在我们的构建链中重新编译一些 jar,例如,如果我有以下结构,jar 1 在其源更改时编译,jar 2 在其源更改或 jar 1 重新编译时编译.
罐子 1:
public class Foo /* impl*/
罐子 2:
public class Bar extends Foo /*impl*/
假设两个班级之间的合同没有改变,即。添加抽象方法或将方法添加到接口等。
我需要重新编译 jar 2 吗?IE。如果对 Foo 中的私有方法进行了一些更改,是否需要重新编译 Bar?
我尝试通过在更改一堆后比较两个类的字节码来测试这一点,并且正如预期的那样它没有改变。然而,我的同事坚持认为,他们遇到过这样的情况,即使合同没有改变,他们也必须重新编译所有内容才能使其工作,但是他们不记得原因是什么......所以举证责任在我身上证明那不应该是必要的。是否存在对超类进行更改需要重新编译子类的情况,即使两者之间的接口保持不变?