Тонкі баночки з пружинним завантажувальним елементом

Востаннє змінено: 7 квітня 2020 року

баночки

Я щойно оголосив про новий курс Learn Spring, орієнтований на основи Spring 5 та Spring Boot 2:

1. Вступ

У цьому підручнику ми розглянемо як побудувати проект Spring Boot у тонкий файл JAR, використовуючи проект spring-boot-thin-launcher.

Spring Boot відомий своїми розгортаннями JAR, де один виконуваний артефакт містить як код програми, так і всі залежності.

Boot також широко використовується для розробки мікросервісів. Іноді це може суперечити підходу "жирного JAR", оскільки включення одних і тих самих залежностей у багато артефактів може стати важливою витратою ресурсів.

2. Передумови

Перш за все, нам, звичайно, потрібен проект Spring Boot. У цій статті ми розглянемо збірки Maven та збірки Gradle у їх найпоширеніших конфігураціях.

Неможливо охопити всі системи збірки та конфігурації збірки, але, сподіваємось, ми розглянемо достатньо загальних принципів, що ви зможете застосувати їх до своєї конкретної установки.

2.1. Проекти Maven

У проекті завантаження, побудованому за допомогою Maven, нам слід мати плагін Spring Boot Maven, налаштований у файлі pom.xml нашого проекту, його батьківського або одного з його предків:

Версія залежностей Spring Boot зазвичай вирішується за допомогою специфікації або успадкування від батьківського POM, як у нашому довідковому проекті:

2.2. Проекти Gradle

У проекті Boot, побудованому за допомогою Gradle, ми матимемо плагін Boot Gradle:

Зверніть увагу, що в цій статті ми розглядатимемо лише проекти Boot 2.x та пізніші. Thin Launcher також підтримує попередні версії, але для цього потрібна дещо інша конфігурація Gradle, яку ми пропускаємо для простоти. Будь ласка, перегляньте домашню сторінку проекту для отримання детальної інформації.

3. Як створити тонкий JAR?

Тонкий запуск Spring Boot - це невелика бібліотека, яка зчитує залежності артефакту з файлу, що входить до самого архіву, завантажує їх із сховища Maven і, нарешті, запускає основний клас програми.

Так, коли ми будуємо проект з бібліотекою, ми отримуємо файл JAR з нашим кодом, файл, що перераховує його залежності, і основний клас з бібліотеки, яка виконує вищезазначені завдання.

Звичайно, речі дещо витонченіші, ніж наше спрощене пояснення; ми детально обговоримо деякі теми далі в статті.

4. Основне використання

Давайте тепер подивимося, як створити “тонкий” JAR із нашого звичайного додатка Spring Boot.

Ми запустимо додаток із звичайним java -jar, з додатковими додатковими аргументами командного рядка, які контролюють Thin Launcher. Ми побачимо пару з них у наступних розділах; Домашня сторінка проекту містить повний список.

4.1. Проекти Maven

У проекті Maven ми повинні змінити декларацію плагіна Boot (див. Розділ 2.1), щоб включити залежність від власної "тонкої" розкладки:

Запуск запускає зчитування залежностей із файлу pom.xml, який Maven зберігає у створеному JAR у каталозі META-INF/maven.

Будемо виконувати збірку, як зазвичай, наприклад, при встановленні mvn.

Якщо ми хочемо мати змогу створювати як тонкі, так і жирові склади (наприклад, у проекті з декількома модулями), ми можемо оголосити власний макет у спеціальному профілі Maven.

4.2. Maven та залежності: тонкі властивості

Ми також можемо змусити Maven створити файл thin.properties на додаток до pom.xml. У цьому випадку файл буде містити повний список залежностей, включаючи перехідні, і панель запуску віддасть перевагу йому перед pom.xml.

Mojo (плагін) для цього - spring-boot-thin-maven-plugin: properties, і за замовчуванням виводить файл thin.properties у src/main/resources/META-INF, але ми можемо вказати його розташування за допомогою властивість thin.output:

Зверніть увагу, що вихідний каталог повинен існувати для досягнення цілі, навіть якщо ми зберегли стандартний.