Sto cercando di ridurre le dimensioni di UberJar utilizzando Maven Shade Plugin
di minimizeJar
. Sembra che minimizeJar
includa solo le classi importate staticamente nel codice (presumo questo perché vedo LogFactory.class
in jar uber al numero org\apache\commons\logging\
ma non sono incluse classi del pacchetto impl
, quindi lanciando java.lang.ClassNotFoundException: org.apache.commons.logging.impl.LogFactoryImpl
quando eseguo il uber-jar).configure Maven Shade minimizzaJar per includere i file di classe
C'è un modo in cui posso dire al plug-in Shade di Maven di includere pacchetti specificati nel contenitore finale, a prescindere da cosa suggerisca lo minimizeJar
?
Qui il pom frammento di quello che sto cercando:
<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/**' corrisponde solo alle directory, potresti voler abbinare tutti i file. Usa invece 'org/apache/commons/logging/**/*'. – Corubba
Seguendo il tuo suggerimento, ho provato '... logging/**', '... logging/**/*', '... logging /**/*.*' ma nessuno ha funzionato. Immagino che il problema includa sia incluso prima che minimizzareJar ignora tutto il resto e impacchetta il barattolo come pensa sia adatto. – kunal