Каждый раз когда мне надо обновить 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
), и приложение будет в дальнейшем использовать их.
Подробно можно почитать тут и тут.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Самостоятельно изучаю java с помощью книжкиТакая проблема и до этого выскакивала, я просто сменил версию, не помогло
У меня есть три класса, являющиеся компонентами
Приложение список: значение - количество Как сделать проверку раз в 15 секунд обновились ли эти количества и если да то вывести уведомления...
переменная должна остаться без изменений, если задано неверное значение