Каждый раз когда мне надо обновить Spring приложение, мне необходимо закачивать на сервер файл размером 30 мегабайт, 29 из которых занимают библиотеки spring. Можно ли как нибудь установить все библиотеки на сервер, чтобы загружать непосредственно свой код размером 1 мегабайт ?
Есть как минимум два варианта решения этой задачи:
Смысл действий сводится к копированию всех зависимостей в отдельную директорию при сборке. В pom.xml
для этого потребуется примерно такая конфигурация:
<project>
<!-- прочие настройки проекта -->
<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>
<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>
</plugins>
</build>
</project>
Для уточнения списка копируемых зависимостей можно использовать свойства, начинающиеся на include
и exclude
в блоке configuration
.
После сборки проекта в директории target
появится директория libs
, в которой будут все зависимости проекта. Но в этом случае в одной директории с JAR проекта должна находиться директория libs
с зависимостями (подробности в META-INF/MANIFEST.MF` собранного JAR). JAR проекта и зависимости можно будет обновлять отдельно от друг от друга.
Обращаю внимание на то, что spring-boot-maven-plugin
не должен быть настроен на сборку толстого JAR.
spring-boot-thin-layout
Второй вариант - использование spring-boot-thin-layout
в качестве зависимости для spring-boot-maven-plugin
.
В этом случае pom.xml
будет иметь такую конфигурацию:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot.experimental</groupId>
<artifactId>spring-boot-thin-layout</artifactId>
<version>1.0.23.RELEASE</version>
</dependency>
</dependencies>
</plugin>
При запуске проекта, собранного с такой конфигурацией, зависимости будут подтянуты автоматически в стандартную директорию для репозитория Maven (~/.m2/repository
), и приложение будет в дальнейшем использовать их.
Подробно можно почитать тут и тут.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Самостоятельно изучаю java с помощью книжкиТакая проблема и до этого выскакивала, я просто сменил версию, не помогло
У меня есть три класса, являющиеся компонентами
Приложение список: значение - количество Как сделать проверку раз в 15 секунд обновились ли эти количества и если да то вывести уведомления...
переменная должна остаться без изменений, если задано неверное значение