ビルド チェーン内のいくつかの jar を再コンパイルする必要があるかどうかを判断しようとしています。たとえば、次の構造がある場合、ソースが変更されたときに jar 1 がコンパイルされ、ソースが変更されたとき、または jar 1 が再コンパイルされたときに jar 2 がコンパイルされます。 .
瓶 1:
public class Foo /* impl*/
瓶 2:
public class Bar extends Foo /*impl*/
2 つのクラス間の契約が変更されないと仮定します。抽象メソッドが追加されたり、インターフェイスにメソッドが追加されたりします。
jar 2 を再コンパイルする必要がありますか? すなわち。Foo 内のプライベート メソッドに変更が加えられた場合、Bar を再コンパイルする必要がありますか?
1つの束を変更した後、2つのクラスのバイトコードを比較してこれをテストしようとしましたが、予想どおり変更されませんでした。しかし、私の同僚は、コントラクトが変更されていないにもかかわらず、それが機能するためにすべてを再コンパイルする必要がある状況に遭遇したと主張していますが、理由が何であったかを思い出せません...それは必要ないはずです。スーパークラスに変更を加えると、2 つの間のインターフェイスが同じままであっても、サブクラスを再コンパイルする必要がある場合はありますか?