किसी विधि को लागू करने के लिए एक विशिष्ट संस्करण वाले जार का उपयोग करने के सामान्य मामले पर विचार करें, लेकिन सार्वजनिक या संरक्षित एपीआई (केवल निजी तरीकों के विधि हस्ताक्षर में) में उस जार से किसी भी प्रकार का खुलासा नहीं करना।एसबीटी में, क्या कोई स्वचालित रूप से निजी रूप से उपयोग किए गए पैकेजों का नाम बदल सकता है?
अब मैं जो चाहता हूं वह इस कोड का एक स्वचालित संकलन-समय है जो मूल पैकेज नाम का नाम बदलकर एसबीटी के भीतर जेनरेट कोड में बदल रहा है (फिर से: मैं एसबीटी में एक प्लगइन जोड़ना चाहता हूं या एक सेटिंग build.sbt यह प्रत्येक sbt compile
पर करता है)।
इसका लक्ष्य क्लासपाथ त्रुटियों से बचने के लिए एक ही पैकेज/कक्षा नाम वाले कक्षाओं के कई संभावित असंगत संस्करणों से बचाना है। नोट: जिस स्थिति में मैं उपरोक्त वर्णन करता हूं, इनलाइनिंग या इस नाम-मैंगलिंग को हमेशा काम करना चाहिए और एक को साइड-स्टेप संस्करण-नरक (बड़े जारों की कीमत पर) की अनुमति देना चाहिए।
लगता है जैसे यह [स्कैला मैक्रोज़] (http://scalamacros.org/) के लिए उपयोग का मामला हो सकता है? – logan
ओएसजीआई का सामान्य रूप से उपयोग किया जाता है। ओएसजीआई नाम मैंगलिंग के बजाए क्लास लोडर के साथ चतुर चाल का उपयोग करता है, लेकिन यह वही प्रभाव प्राप्त करता है। –
मैवेन-शेड-प्लगइन से क्लास रिलायंस के बराबर एसबीटी करने के किसी भी तरीके से मुझे नहीं पता: http://maven.apache.org/plugins/maven-shade-plugin/examples/class-relocation.html – mpilquist