Исполняемый файл Jar Spring Boot без зависимостей
Какой самый простой способ создать JAR-файл весенней загрузки без его зависимостей? По сути, я должен иметь возможность хранить JAR-файлы зависимостей в отдельной папке.
В настоящее время я использую плагин Spring Boot Maven, однако он создает файл Fat JAR со всеми зависимостями.
3 ответа
Просто не пользуюсь spring-boot-maven-plugin
на все и используйте упаковку JAR. Таким образом, сборка не будет упаковывать зависимости в JAR.
Spring-boot-maven-plugin имеет опцию для переупаковки, которая помещает зависимости внутрь (делая uber jar)
Вы можете отключить переупаковку или сделать переупакованный.jar другим классификатором [2]
Ниже приведено решение, которое я нашел в разделе "Как создать исполняемый файл JAR с помощью Maven". Вам просто нужно поместить его в свои плагины.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>
${project.build.directory}/libs
</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>libs/</classpathPrefix>
<mainClass>
org.baeldung.executable.ExecutableMavenJar
</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
Замените изменить запись сборки в pom.xml на
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.1.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/dependency_jar</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
В целевой папке будет папка dependency_jar со всеми jar- зависимостями, а также "project_name.jar"(толстый jar) и "project_name.jar.original" (файл jar вашего кода)