हमें मेवेन का उपयोग करके एक जार बनाने की जरूरत है, जिस तरह से इसकी सभी निर्भरताओं को शामिल किया गया है, लेकिन यह भी कि उन सभी निर्भरताओं का नाम बदल दिया गया है (स्थानांतरित)।मेवेन - क्या सभी निर्भरताओं को स्थानांतरित करने के साथ आसानी से 'उबर' जार बनाने का कोई तरीका है?
, मैं कर रहा हूँ के हमारे अपने संकुल सभी com.mycompagny.projectx.*
के साथ शुरू मान लीजिए "। हम चाहते हैं कि परियोजना निर्भरता उनके पैकेज के साथ शुरू होता है के लिए नाम बदला है," embedded
"नहीं, बल्कि हमारे अपने वर्गों।
उदाहरण के लिए maven-shade-plugin का उपयोग करना इस लक्ष्य को हासिल नहीं कर पा रहे हैं:।
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<createDependencyReducedPom>true</createDependencyReducedPom>
<artifactSet>
<includes>
<include>*.*</include>
</includes>
</artifactSet>
<relocations>
<relocation>
<pattern>*</pattern>
<shadedPattern>embedded.</shadedPattern>
<excludes>
<exclude>com.mycompagny.projectx.*</exclude>
</excludes>
</relocation>
</relocations>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
यहाँ <pattern>*</pattern>
मान्य नहीं है इसके अलावा, अगर मैं <pattern></pattern>
(रिक्त स्ट्रिंग) का उपयोग करें, तो सब कुछ "एम्बेडेड" पैकेज के लिए, भी संसाधनों जगह बदली है ("मेटा -आईएनएफ "डीआई रेक्टरी भी)! बेशक हम चाहते हैं कि संसाधन जार की जड़ पर बने रहें।
मुझे लगता है कि हम कई <relocation>
तत्वों, निर्भरता से प्रत्येक पैकेज के लिए एक बना सकते हैं, लेकिन यह बहुत काम होगा: <relocation>com</relocation>
, <relocation>net</relocation>
, <relocation>javax</relocation>
, आदि
कितनी आसानी से स्थानांतरित करने के लिए पर कोई विचार सभी उबर जार के अंदर निर्भरता, अपने स्वयं के वर्गों, संसाधनों और "मेटा-आईएनएफ" निर्देशिका को छूए बिना?
हालांकि इसने आपकी समस्या का समाधान नहीं किया ... यह _IS_ एक बेहद उपयोगी अनियंत्रित सुविधा है।मेरे पास ऐसे संसाधन हैं जिन्हें किसी भिन्न फ़ोल्डर में स्थानांतरित करने की आवश्यकता है (स्रोत कोड नहीं, और पैकेज संरचना में नहीं)। अद्यतित करने के लिए धन्यवाद। – Lucas