У меня проблема:Maven building jar: объединить дубликаты ресурсов из зависимостей
У меня есть проект с пружинным ботинком. Он отлично работает на eclipse, но мне нужно создать банку с зависимостями, поэтому я добавляю конфигурацию maven-assembly-plugin в pom.
Некоторые зависимости пружинные имеет в META-INF файл с именем spring.schemas, и мне нужно, чтобы объединить все spring.schemas в одну (весна-контекст, пружинных бобы и т.д.)
Я попытался this solution с помощью Maven-тень-pluggin и AppendingTransformer, и он объединяет все spring.schemas отлично ... Но есть проблема, когда я исполняю банку, он терпит неудачу с:
java.lang.IllegalStateException: Unable to open nested entry 'lib/spring-boot-starter-batch-1.2.4.RELEASE.jar'.
It has been compressed and nested jar files must be stored without compression.
Please check the mechanism used to create your executable jar file
Таким образом, тень плагина сжимать банку, и пружинная загрузка не нравится, и нет способа отключить сжатие в тени. Я вручную скопирую тени spring.schemas, созданные тенью, и я положил его в сборку maven-assembly-pluggin и несжатую банку с зависимостями. Оно работает.
Затем я попытался включить сгенерированные spring.schemas в папку с ресурсами, но это всегда отменено spring.schemas из spring-context.
Я также попытался this other solution исключить spring.schemas из кувшина зависимостей с использованием дескриптором XML в сборке, но он не работает:
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
<id>distribution</id>
<formats>
<format>jar</format>
</formats>
<dependencySets>
<dependencySet>
<outputDirectory>/</outputDirectory>
<includes>
<include>org.springframework:spring-context</include>
</includes>
<unpack>true</unpack>
<unpackOptions>
<excludes>
<exclude>**/spring.schemas</exclude>
</excludes>
</unpackOptions>
</dependencySet>
<dependencySet>
<outputDirectory>/</outputDirectory>
<excludes>
<exclude>org.springframework:spring-context</exclude>
</excludes>
<unpack>true</unpack>
</dependencySet>
</dependencySets>
</assembly>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>org.springframework.batch.core.launch.support.CommandLineJobRunner</mainClass>
</manifest>
<compress>false</compress>
</archive>
<descriptors>
<descriptor>src/main/assembly/distribution.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
Это моя зависимость:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-batch</artifactId>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
</dependency>
<!-- MySql 5.5 Connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.35</version>
</dependency>
</dependencies>
Любые идеи? Заранее спасибо