[Spring][Maven]実行可能jarを生成するときの落とし穴 その2
fatjarを生成すると当然jarの署名も変わります。なのでchecksumを検証するような行儀の良いjarを含んでいると実行時にSecurityExceptionが吹っ飛んできます。
回避策は以下の通り。署名のマニフェストをjarから除外するのです。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>jp.co.tsr_net.omega.pdf.Main</mainClass> </transformer> <!-- Springの各jarにこれらのファイルが存在するため、マージする。 --> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.handlers</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.schemas</resource> </transformer> <!-- jarを作りなおすため、署名は無効にする --> <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer"> <resource>.RSA</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer"> <resource>.DSA</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer"> <resource>*.SF</resource> </transformer> </transformers> </configuration> </execution> </executions> </plugin>