私はこの問題を抱えています:
spring-boot を使用したプロジェクトがあります。Eclipse で完全に動作しますが、依存関係のある jar を生成する必要があるため、pom に maven-assembly-plugin 構成を追加します。
一部の春の依存関係には、META-INF に spring.schemas というファイルがあり、すべての spring.schemas を 1 つにマージする必要があります (spring-context、spring-beans など)。
maven-shade-pluggin と AppendingTransformer を使用してこのソリューションを試したところ、すべての spring.schemas が完全にマージされました...しかし、jar を実行すると次のように失敗するという問題があります。
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
したがって、shade プラグインは jar を圧縮しますが、spring-boot はそれを好まず、shade で圧縮をオフにする方法はありません。シェードによって生成されたシェード spring.schemas を手動でコピーし、それを maven-assembly-pluggin で生成された圧縮されていない jar に依存関係とともに配置します。できます。
次に、生成された spring.schemas をリソース フォルダーに含めようとしましたが、常に spring-context の spring.schemas によってオーバーライドされます。
アセンブリで記述子 XML を使用して依存関係 jar から spring.schemas を除外するために、この他のソリューションも試しましたが、機能しません。
<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>
何か案は?前もって感謝します