Wie erstelle ich mit maven einen ausführbaren JAR auf Spring-Basis?

Ich habe ein Maven-basiertes Spring-WS-Client-Projekt, das ich als einzelnes Glas verpacken möchte. In Eclipse läuft alles richtig. Wenn ich versuche, es als ausführbare JAR-Datei zu packen, erhalte ich ClassNotFound-Ausnahmen, da die Spring-JAR-Dateien nicht in meiner Anwendungs-JAR-Datei enthalten sind.

Also habe ich diemaven-shade-plugin um alle meine Abhängigkeiten in mein Anwendungsglas aufzunehmen. Wenn ich mir mein App-Jar ansehe, sehe ich alle Klassendateien aller enthaltenen Abhängigkeiten (alle Library-Jars werden aufgelöst).

<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>

Mein Problem ist, dass beim Verpackungsprozess meine mehreren Federabhängigkeiten unterschiedlich sindMETA-INF / spring.schemas Dateien, die sich überschreiben. Folglich hat mein letztes Glas eine unvollständige Datei spring.schemas.

Wenn ich versuche, meine ausführbare JAR-Datei auszuführen, erhalte ich die Fehlermeldung Spring, dass keine Dateien gefunden werden können, da die Datei spring.schemas unvollständig ist (die JAR-Datei von Spring-WS hat die Datei spring.schemas des Spring-Core überschrieben).

Das META-INF / spring.schemas meiner ausführbaren Datei ist:

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

Anstelle von 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

Ich bin ratlos. Ich bin nicht sicher, ob / wie ich alles als einzelnes ausführbares Glas verpacken kann. Ich weiß nicht, ob dies ein Problem mit der Konfiguration des Schatten-Plugins ist oder ob ich versuche, etwas Unmögliches zu tun. Es scheint nicht richtig zu sein, dass ich meine eigene Datei spring.schemas (eine Verkettung der anderen) manuell erstellen müsste.

Ich habe die Waffe vielleicht ein wenig gesprungen. Beim Ausgraben weiterer Informationen zum Schatten-Plugin ist mir das aufgefallenAppendingTransformer das hatte ich vorher verpasst. Ich möchte jedoch wissen, welche anderen Dateien dieselben Probleme haben. Ich habe dieses spezielle Frühlingsproblem entdeckt / entdeckt. Ich habe keine Ahnung von anderen Bibliotheken, die etwas Ähnliches tun könnten ...

Anregungen wäre dankbar.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage