¿Cómo crear un tarro ejecutable basado en muelles con maven?

Tengo un proyecto de cliente Spring-WS basado en Maven que quiero empaquetar como un solo contenedor. En eclipse, todo funciona correctamente. Cuando trato de empaquetarlo como un jar ejecutable, recibo excepciones de ClassNotFound ya que los jarros Spring no están incluidos en mi jar de aplicación.

Así que agregué elplugin de cortina de sombra para incluir todas mis dependencias en mi aplicación jar. Cuando miro mi aplicación jar, veo todos los archivos de clase de todas las dependencias incluidas (todas las bibliotecas están explotadas).

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

Mi problema es que en el proceso de empaquetado, mis múltiples dependencias de resorte tienen diferentesMETA-INF / Spring.schemas archivos que se anulan entre sí. En consecuencia, mi tarro final tiene un archivo spring.schemas incompleto.

Entonces, cuando trato de ejecutar mi jar ejecutable, recibo mensajes de error de Spring que indican que no se pueden encontrar archivos porque el archivo spring.schemas está incompleto (el jar de Spring-WS ha reemplazado al archivo spring.schemas de Spring-core).

Los ejecutables de mi tarro 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

En lugar de 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

Estoy perplejo. No estoy seguro de si / cómo puedo empaquetar todo como un solo archivo ejecutable. No sé si esto es un problema de configuración de complemento de sombra, o si estoy tratando de hacer algo imposible. No me parece correcto tener que crear manualmente mi propio archivo spring.schemas (una concatenación de los demás).

Puede que haya saltado un poco la pistola. Al desenterrar más información sobre el plugin de sombra, noté laAnexando Transformador que había extrañado anteriormente. Sin embargo, mi preocupación es ¿cómo saber qué otros archivos tienen los mismos problemas? He descubierto / atrapado este problema particular de primavera. No tengo idea de ninguna otra biblioteca que pueda estar haciendo algo similar ...

Cualquier sugerencia sera apreciada.

Respuestas a la pregunta(5)

Su respuesta a la pregunta