मैं यह निर्धारित करने की कोशिश कर रहा हूं कि मुझे अपनी बिल्ड श्रृंखला में कुछ जारों को फिर से कंपाइल करने की आवश्यकता है, अगर मेरे पास निम्नलिखित संरचना है, तो जार 1 संकलित करता है जब इसका 'स्रोत बदलता है और जब 2' इसके 'स्रोत में परिवर्तन होता है या जब जार 1 recompiled है।यदि कोई अभिभावक वर्ग/इंटरफ़ेस बदलता है तो कक्षा का बाइटकोड बदल सकता है?
जार 1:
public class Foo /* impl*/
जार 2:
public class Bar extends Foo /*impl*/
2 वर्गों के बीच अनुबंध मान लिया जाये कि यानी परिवर्तन नहीं करता है,। एक अमूर्त विधि जोड़ा जाता है या एक इंटरफ़ेस में एक विधि जोड़ा जाता है, आदि
क्या मुझे जार 2 को पुन: संकलित करने की आवश्यकता है? अर्थात। अगर फू के भीतर किसी निजी विधि में कुछ बदलाव किए जाते हैं तो बार को फिर से तैयार करने की आवश्यकता होगी?
मैंने एक में एक गुच्छा बदलने के बाद दो कक्षाओं के बाइटकोड की तुलना करके इसका परीक्षण करने की कोशिश की और उम्मीद की कि यह नहीं बदला। मेरे सहकर्मियों ने जोर देकर कहा कि उन्हें ऐसी परिस्थितियों का सामना करना पड़ा है जहां अनुबंध अपरिवर्तित था, फिर भी उन्हें काम करने के लिए सबकुछ फिर से जोड़ना पड़ा, हालांकि उन्हें याद नहीं आया कि कारण क्या था ... तो सबूत का बोझ मुझे दिखाने के लिए है यह जरूरी नहीं होना चाहिए। क्या कोई ऐसा मामला है जहां सुपरक्लस में बदलाव करने के लिए सबक्लास को फिर से सम्मिलित करने की आवश्यकता होगी, भले ही दोनों के बीच इंटरफ़ेस समान रहे?
लिंक के लिए धन्यवाद, मुझे लगता है कि मैं उम्मीद कर रहा था कि जब तक स्रोत नहीं बदला, तब तक क्लास फ़ाइल को बदलने की आवश्यकता नहीं होगी। ओह अच्छा। – Andrew