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