Tôi có một dự án máy khách Spring-WS dựa trên Maven mà tôi muốn đóng gói như một cái bình. Trong nhật thực, mọi thứ đều chạy đúng cách. Khi tôi cố gắng đóng gói nó như là một jar thực thi, tôi nhận được các ngoại lệ ClassNotFound vì các lọ Spring không được bao gồm trong jar ứng dụng của tôi.Làm thế nào để tạo ra jar thực thi dựa trên mùa xuân với maven?
Vì vậy, tôi đã thêm maven-shade-plugin để bao gồm tất cả các phụ thuộc trong jar ứng dụng của tôi. Khi tôi nhìn vào jar ứng dụng của mình, tôi thấy tất cả các tệp lớp từ tất cả các phụ thuộc được bao gồm (tất cả các thư viện của jar đều được phát nổ).
<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>
Vấn đề của tôi là trong quá trình đóng gói, nhiều phụ thuộc mùa xuân của tôi có khác nhau META-INF/spring.schemas tệp ghi đè nhau. Do đó, lọ cuối cùng của tôi có tệp spring.schemas không hoàn chỉnh. Vì vậy, khi tôi cố gắng chạy jar thực thi của mình, tôi nhận được thông báo lỗi Spring mà không thể tìm thấy tệp vì tệp spring.schemas chưa hoàn thành (jar của Spring-WS đã ghi đè lên tệp spring.schemas của Spring-core).
My jar thực thi của 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
Thay vì mùa xuân-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
tôi stumped. Tôi không chắc chắn nếu/làm thế nào tôi có thể gói tất cả mọi thứ như là một jar thực thi duy nhất. Tôi không biết đây có phải là vấn đề về cấu hình plugin bóng mát hay không, hoặc nếu tôi đang cố gắng làm điều gì đó không thể. Nó sẽ không có vẻ chính xác mà tôi sẽ phải tự tạo tập tin spring.schemas của riêng tôi (một nối của những người khác).
Tôi có thể đã nhảy súng một chút. Trong việc tìm hiểu thêm thông tin về plugin bóng râm, tôi nhận thấy số AppendingTransformer mà trước đó tôi đã bỏ lỡ. Tuy nhiên, mối quan tâm của tôi là làm thế nào để biết những tập tin khác có cùng một vấn đề? Tôi đã phát hiện/bắt gặp vấn đề mùa xuân cụ thể này. Tôi không có ý tưởng về bất kỳ thư viện nào khác có thể đang làm một việc gì đó tương tự ...
Bất kỳ đề xuất nào cũng sẽ được đánh giá cao.
Cách tiếp cận khác hoạt động tốt là đặt các lọ vào thư mục lib riêng biệt và thêm thư mục 'lib' này vào đường dẫn lớp trong biểu hiện - xem André Aronsen's trả lời http://stackoverflow.com/a/4323501/241986 –