Прежде всего, есть два плагина, которые вы можете использовать для создания толстых банок: maven-shade-plugin и maven-assembly-plugin .
Основное различие между ними заключается в том, что maven-Assembly просто создает JAR-файл, содержащий все зависимости, в то время как Maven-Shade также перемещает эти зависимости внутренне, так что, если другой проект зависит от вашего JAR-файла, вы не рискуете столкнуться с зависимостями.
Если вы не ожидаете, что этот артефакт будет использоваться как зависимость от других проектов, вы можете использовать для него maven-assembly-plugin. Вот пример того, как его использовать:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>3.1.1</version>
<configuration>
<finalName>${project.artifactId}</finalName>
<archive>
<manifest>
<mainClass>myProject.package.main</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
Если вам действительно нужно затенить свои зависимости, попробуйте изменить конфигурацию манифеста плагина следующим образом, по крайней мере, это должно решить проблему, которую вы ... Имеется с указанием основного класса:
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<Main-Class>myProject.package.main</Main-Class>
<X-Compile-Source-JDK>${maven.compiler.source}</X-Compile-Source-JDK>
<X-Compile-Target-JDK>${maven.compiler.target}</X-Compile-Target-JDK>
</manifestEntries>
</transformer>