Maven Shade Plugin
のminimizeJar
を使ってUberJarのサイズを最小限にしようとしています。 minimizeJar
には、コード内に静的にインポートされたクラスしか含まれていないようです(uber jarをorg\apache\commons\logging\
に入れているので、これが疑わしいですが、impl
パッケージのクラスが含まれていないので、uber-jarを実行するとjava.lang.ClassNotFoundException: org.apache.commons.logging.impl.LogFactoryImpl
)クラスファイルを含むようにMaven Shade minimizeJarを設定します
minimizeJar
の示唆にかかわらず、特定のパッケージを最終的なジャーに含めるようにMavenのShadeプラグインに指示する方法はありますか?ここで
私がしようとしています何のポンポンスニペット
:<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.5</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<minimizeJar>true</minimizeJar>
<filters>
<filter>
<artifact>commons-logging:commons-logging</artifact>
<includes>
<include>org/apache/commons/logging/**</include>
</includes>
</filter>
</filters>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.myproject.Main</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
'org/apache/commons/logging/**'はディレクトリとのみ一致しますので、すべてのファイルを照合したいかもしれません。代わりに 'org/apache/commons/logging/**/*'を使用してください。 – Corubba
あなたの提案に続いて、私は '... logging/**'、 '... logging/**/*'、 '... logging /**/*.*'を試みましたが、何も働かなかった。私は問題が含まれて最初に含まれていると思いますminimJarは、他のすべてを無視し、それが適切だと思うように瓶をバンドルします。 – kunal