मेरे पास एक मेवेन आधारित स्प्रिंग-डब्ल्यूएस क्लाइंट प्रोजेक्ट है जिसे मैं एक जार के रूप में पैकेज करना चाहता हूं। ग्रहण में, सब कुछ ठीक से चलता है। जब मैं इसे निष्पादन योग्य जार के रूप में पैकेज करने का प्रयास करता हूं, तो मुझे क्लास नॉटफाउंड अपवाद मिलते हैं क्योंकि स्प्रिंग जार मेरे एप्लिकेशन जार में शामिल नहीं होते हैं।मेवेन के साथ वसंत-आधारित निष्पादन योग्य जार कैसे बनाएं?
तो मैंने अपने आवेदन जार में मेरी सभी निर्भरताओं को शामिल करने के लिए maven-shade-plugin जोड़ा। जब मैं अपने ऐप जार को देखता हूं, तो मैं सभी निर्भरताओं से सभी वर्ग फ़ाइलों को शामिल करता हूं (सभी पुस्तकालय जार विस्फोटित होते हैं)।
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.cws.cs.Client</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
मेरे समस्या यह है कि पैकेजिंग प्रक्रिया में, अपने एक से अधिक वसंत निर्भरता अलग META-INF/spring.schemas फ़ाइलों कि एक दूसरे को ओवरराइड है। नतीजतन, मेरे अंतिम जार में एक अपूर्ण वसंत.schemas फ़ाइल है।
तो जब मैं अपना निष्पादन योग्य जार चलाने की कोशिश करता हूं, तो मुझे स्प्रिंग त्रुटि संदेश मिलते हैं कि वसंत.schemas फ़ाइल अधूरा होने के बाद से फ़ाइलें नहीं मिल सकती हैं (स्प्रिंग-डब्ल्यूएस के जार ने स्प्रिंग-कोर की spring.schemas फ़ाइल को ओवरराइड कर दिया है)।
मेरे निष्पादन योग्य जार के META-INF/spring.schemas:
http\://www.springframework.org/schema/web-services/web-services-1.5.xsd=/org/springframework/ws/config/web-services-1.5.xsd
http\://www.springframework.org/schema/web-services/web-services-2.0.xsd=/org/springframework/ws/config/web-services-2.0.xsd
http\://www.springframework.org/schema/web-services/web-services.xsd=/org/springframework/ws/config/web-services-2.0.xsd
वसंत-beans.jar META-INF/spring.schemas के बजाय
:
http\://www.springframework.org/schema/beans/spring-beans-2.0.xsd=org/springframework/beans/factory/xml/spring-beans-2.0.xsd
http\://www.springframework.org/schema/beans/spring-beans-2.5.xsd=org/springframework/beans/factory/xml/spring-beans-2.5.xsd
http\://www.springframework.org/schema/beans/spring-beans-3.0.xsd=org/springframework/beans/factory/xml/spring-beans-3.0.xsd
http\://www.springframework.org/schema/beans/spring-beans-3.1.xsd=org/springframework/beans/factory/xml/spring-beans-3.1.xsd
http\://www.springframework.org/schema/beans/spring-beans.xsd=org/springframework/beans/factory/xml/spring-beans-3.1.xsd
http\://www.springframework.org/schema/tool/spring-tool-2.0.xsd=org/springframework/beans/factory/xml/spring-tool-2.0.xsd
http\://www.springframework.org/schema/tool/spring-tool-2.5.xsd=org/springframework/beans/factory/xml/spring-tool-2.5.xsd
http\://www.springframework.org/schema/tool/spring-tool-3.0.xsd=org/springframework/beans/factory/xml/spring-tool-3.0.xsd
http\://www.springframework.org/schema/tool/spring-tool-3.1.xsd=org/springframework/beans/factory/xml/spring-tool-3.1.xsd
http\://www.springframework.org/schema/tool/spring-tool.xsd=org/springframework/beans/factory/xml/spring-tool-3.1.xsd
http\://www.springframework.org/schema/util/spring-util-2.0.xsd=org/springframework/beans/factory/xml/spring-util-2.0.xsd
http\://www.springframework.org/schema/util/spring-util-2.5.xsd=org/springframework/beans/factory/xml/spring-util-2.5.xsd
http\://www.springframework.org/schema/util/spring-util-3.0.xsd=org/springframework/beans/factory/xml/spring-util-3.0.xsd
http\://www.springframework.org/schema/util/spring-util-3.1.xsd=org/springframework/beans/factory/xml/spring-util-3.1.xsd
http\://www.springframework.org/schema/util/spring-util.xsd=org/springframework/beans/factory/xml/spring-util-3.1.xsd
मैं स्टंप्डया हूँ। मुझे यकीन नहीं है कि मैं एक निष्पादन योग्य जार के रूप में सब कुछ कैसे पैकेज कर सकता हूं। मुझे नहीं पता कि यह एक छाया-प्लगइन कॉन्फ़िगरेशन समस्या है, या यदि मैं कुछ असंभव करने की कोशिश कर रहा हूं। यह सही नहीं लगेगा कि मुझे मैन्युअल रूप से अपनी खुद की spring.schemas फ़ाइल (दूसरों का एक संयोजन) बनाना होगा।
मैंने बंदूक को थोड़ा सा कूद दिया होगा। छाया प्लगइन पर अधिक जानकारी खोदने में, मैंने AppendingTransformer देखा जो मैंने पहले छोड़ा था। हालांकि, मेरी चिंता यह जानना है कि अन्य फाइलों में कौन सी फाइलें हैं? मैंने इस विशेष वसंत मुद्दे को खोज लिया/पकड़ा है। मुझे किसी भी अन्य पुस्तकालयों के बारे में कोई जानकारी नहीं है जो कुछ ऐसा कर सकता है ...
किसी भी सुझाव की सराहना की जाएगी।
वैकल्पिक दृष्टिकोण है जो अच्छा काम करता है अलग lib फ़ोल्डर में वसंत जार रखें, और प्रकट में वर्ग पथ में इस 'lib' फ़ोल्डर जोड़ने के लिए है - आंद्रे Aronsen देखते हैं उत्तर http://stackoverflow.com/a/4323501/241986 –