Jak stworzyć oparty na wiosennym pliku wykonywalnym słoik z mavenem?
Mam projekt klienta Spring-WS oparty na Maven, który chcę spakować jako pojedynczy słoik. W zaćmieniu wszystko działa prawidłowo. Gdy próbuję spakować go jako wykonywalny jar, otrzymuję wyjątki ClassNotFound, ponieważ słoiki Spring nie są zawarte w moim słoiku aplikacji.
Dodałem więcwtyczka maven-shade uwzględnić wszystkie moje zależności w słoiku aplikacji. Kiedy patrzę na mój słoik aplikacji, widzę wszystkie pliki klas ze wszystkich zależności (wszystkie słoiki biblioteki są eksplodowane).
<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>
Moim problemem jest to, że w procesie pakowania moje wielokrotne zależności wiosenne różnią sięMETA-INF / spring.schemas pliki, które wzajemnie się zastępują. W konsekwencji mój ostatni słoik ma niekompletny plik spring.schemas.
Kiedy próbuję uruchomić mój wykonywalny jar, otrzymuję komunikaty o błędach Spring, których nie można znaleźć, ponieważ plik spring.schemas jest niekompletny (jar Spring-WS przesłonił plik spring.schemas Spring-core).
Mój plik wykonywalny jar 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
Zamiast Spring-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
Jestem zakłopotany. Nie jestem pewien, czy / jak mogę spakować wszystko jako pojedynczy plik wykonywalny. Nie wiem, czy jest to problem z konfiguracją wtyczki w cieniu, czy też próbuję zrobić coś niemożliwego. Nie wydaje się poprawne, że musiałbym ręcznie utworzyć własny plik spring.schemas (konkatenacja innych).
Mogłem trochę skoczyć z pistoletu. Przy wykopywaniu dodatkowych informacji o wtyczce odcienia zauważyłemAppendingTransformer że wcześniej tęskniłem. Jednak moim problemem jest to, jak wiedzieć, które inne pliki mają te same problemy? Odkryłem / złapałem ten konkretny problem Spring. Nie mam pojęcia o innych bibliotekach, które mogą robić coś podobnego ...
Wszelkie sugestie będą mile widziane.