Хорошо, плагин Maven Resources и плагин Assembly не обрезали его, поэтому я выкопал еще немного.
Кажется, это возможно с плагином Maven Shade .
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<!-- Main class -->
<mainClass> <!-- fully qualified package and class name --> </mainClass>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</transformer>
</transformers>
<filters>
<filter>
<artifact>org.something:SomeDependency</artifact>
<excludes>
<exclude>*.properties</exclude>
</excludes>
</filter>
</filters>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Итак, внутри тегов <configuration> ... </configuration>
я определил две вещи: реализацию-трансформера, которая заботится о том, чтобы модифицировать jar-манифест для запуска и использовать текущий каталог в качестве корневого пути к классу, и исключая все файлы, заканчивающиесяс .properties из зависимости org.something: SomeDependency.
Фактическая часть фильтрации - это то место, где вы можете исключить файлы, которые вы не хотите помещать в финальную банку, созданную затенением.Вы можете исключить файлы из всех зависимостей и текущего проекта, используя <artifact>*:*</artifact>
внутри определенного <filter>
, или вы можете выбрать только определенную зависимость, используя <artifact>dependcyGroupId:dependencyArtifact</artifact>
, например <artifact>junit:junit</artifact>
, или даже использовать подстановочные знаки для одной илидругое (<artifact>*:junit</artifact>
).Затем исключенные файлы определяются внутри тегов <excludes>...</excludes>
.Опять же, вы можете использовать точные имена файлов или подстановочные знаки.Это должно помочь вам решить вашу текущую проблему, хотя я бы посоветовал прочитать документацию с сайта плагина, потому что затенение может сделать намного больше, чем это.