Tôi đang cố gắng xác định xem tôi có cần biên dịch lại một số lọ trong chuỗi xây dựng của chúng tôi hay không, nếu tôi có cấu trúc như sau, jar 1 biên dịch khi thay đổi nguồn và jar 2 biên dịch khi thay đổi nguồn hoặc khi jar 1 đã biên dịch lại.Có thể bytecode của một lớp thay đổi nếu một lớp cha/giao diện thay đổi?
jar 1:
public class Foo /* impl*/
jar 2:
public class Bar extends Foo /*impl*/
Giả sử hợp đồng giữa 2 lớp không thay đổi, tức là. phương pháp trừu tượng được thêm vào hoặc phương thức được thêm vào giao diện, v.v.
Tôi có cần biên dịch lại jar 2 không? I E. nếu một số thay đổi được thực hiện cho một phương pháp riêng trong Foo Bar sẽ cần phải được biên dịch lại?
Tôi đã thử nghiệm điều này bằng cách so sánh bytecode của hai lớp sau khi thay đổi một bó trong một và như mong đợi nó không thay đổi. Tuy nhiên, đồng nghiệp của tôi nhấn mạnh rằng họ đã gặp phải những tình huống mặc dù hợp đồng không thay đổi nhưng họ phải biên dịch lại mọi thứ để nó hoạt động, tuy nhiên họ không thể nhớ lý do là gì ... điều đó không cần thiết. Có trường hợp nào thực hiện thay đổi đối với siêu lớp hay không sẽ yêu cầu lớp con được biên dịch lại mặc dù giao diện giữa hai vẫn giữ nguyên?
Cảm ơn bạn đã liên kết, tôi đoán tôi đã hy vọng rằng miễn là nguồn không thay đổi, tệp lớp sẽ không bao giờ cần phải thay đổi. Oh well. – Andrew