का उपयोग कर एक जार फ़ाइल के बाहर संसाधनों का प्रबंधन करना मुझे लगता है कि मैं इसके साथ मंडलियों में घूम रहा हूं, इसलिए उम्मीद है कि यह हल करने के लिए अपेक्षाकृत आसान है।मैवेन (और ग्रहण)
आवेदन के लिए मैं विकसित कर रहा हूं मैं एक्सएमएल फाइलों का एक सेट रखना चाहता हूं जिसमें कॉन्फ़िगरेशन जानकारी हो। और मैं जार फ़ाइल को फिर से संकलित किए बिना संपादन योग्य होना चाहता हूं। तो मैं क्या चाहता हूं कि उन्हें जार फ़ाइल के समान फ़ोल्डर में संसाधन नामक फ़ोल्डर में रखना है। तो मेरी इरादा संरचना की तरह
root
|
- app.jar
|
- resources
|
- config
|
- config1.xml
- config2.xml
मैं इतना है कि यह maven-resource-plugin
भीतर copy-resources
उपयोग करते हुए मेरे लक्ष्य फ़ोल्डर में संसाधनों की प्रतिलिपि बनाएगा मेरी pom.xml समायोजित करने के लिए कामयाब रहे कुछ है।
मैं भी एक संसाधन के रूप में मेरी संसाधन निर्देशिका जोड़ दिया है (इतना है कि यह ग्रहण के भीतर काम करता है) का उपयोग कर
<resources>
<resource>
<directory>resources</directory>
</resource>
</resources>
ताकि मैं उन्हें
getClass().getResource("/config/xml/config1.xml");
का उपयोग कर उपयोग कर सकते हैं और मेरे संसाधन निर्देशिका शामिल मवेन-जार-प्लगइन में manifestEntries का उपयोग कर जार (मुझे लगता है) के प्रकट होने के वर्गपंथ पर।
<manifestEntries>
<Class-Path>. resources</Class-Path&>
</manifestEntries>
और
<configuration>
<exclude>resources/**/*.xml</exclude>
</configuration>
वे अभी भी जार फ़ाइल में संकलित किया जा रहा है का उपयोग कर जार फ़ाइल में संकलित किया जा रहा से अपने संसाधन को बाहर करने का प्रयास किया। और यदि मैं उन्हें जार फ़ाइल से मैन्युअल रूप से हटा देता हूं तो संसाधन तक पहुंचने का प्रयास करते समय मुझे एक शून्य सूचक अपवाद मिलता है।
तो मैं जो हासिल करने की कोशिश कर रहा हूं, और संरचना को प्राप्त करने के लिए एक तरीका है जिसे मैंने बाहरी संसाधनों के लिए ऊपर उल्लिखित संरचना प्राप्त करने के लिए एक तरीका है जो जार फ़ाइल में संकलित नहीं हैं लेकिन जो पहुंच योग्य हैं क्लासपाथ) एक ही रूट निर्देशिका में एक जार के भीतर कोड द्वारा और जो अभी भी ग्रहण में कार्य करता है।
किसी भी मदद या मार्गदर्शन की सराहना की जाएगी।
से सिर्फ सभी एक्सएमएल फ़ाइलें आप यह कैसे हल किया मुद्दा? – Isaac
अलास मैंने प्रबंधित नहीं किया है। यह एक निजी परियोजना के लिए है जो इस रास्ते पर थोड़ा सा गिर गया है, इस समय सभी कॉन्फ़िगरेशन पूरी तरह से जार फ़ाइल में बंडल किए गए हैं। कुछ बिंदु पर इसे फिर से देख सकते हैं, लेकिन मैं अभी तक इसे समझने में सक्षम नहीं हूं – Ruanae