Проект Spring Boot будет расширен и преобразован в Gradle-плагин с поддержкой плагинов. Это позволит динамически загружать JAR-файлы из указанного каталога как зависимости во время выполнения, обеспечивая эффект разработки на основе плагинов.
Это похоже на использование внешних зависимостей lib, где JAR-файлы плагинов автоматически загружаются как зависимости при запуске. Также это похоже на внешние проекты lib, которые помещают JAR-файлы плагинов во внешний каталог lib. Однако после запуска эти JAR-файлы не загружаются.
С помощью этого плагина можно реализовать автоматическую загрузку плагинов без изменения исходного JAR-файла при его запуске.
Дополнительные параметры конфигурации см. в консоли.
Имя | Значение по умолчанию | Описание | Требуется ли настройка |
---|---|---|---|
custom | false | Указывает, следует ли активировать режим настройки | × |
springBootLoaderJarPath | null | Путь к JAR-файлу загрузчика Spring Boot | Необходимо настроить после активации режима настройки |
compileDir | project.getBuildDir() | Путь компиляции | × |
cacheDir | new File(compileDir, "libs") | Каталог кэша | × |
cacheName | "sakuraCache" | Имя каталога кэша | × |
buildDir | new File(compileDir, "libs") | Путь сборки | × |
buildJarName | project.getName() + "-" + project.getVersion() | Имя файла сборки JAR | × |
myLauncherName | "MyLauncher" | Имя класса запуска | √ |
myLauncherPackageName | "com.sakura.hk.plugin" | Пакет класса запуска | √ |
pluginPathProperty | "sakura.plugin.path" | Свойство JVM для получения пути плагина | √ |
pluginPathProperty | "sakura.plugin.name" | Свойство JVM для получения имени папки плагина | √ |
pluginPathName | "myPlugin" | Имя папки плагина по умолчанию | √ |
suffix | "sakura" | Суффикс файла сборки JAR | × |
delCache | true | Указание на удаление файлов кэша | × |
type | SakuraBootType.JAR | Тип упаковки | × |
- × — изменение параметра не требует активации режима настройки.
- √ — изменение параметра требует активации режима настройки.
custom указывает, следует ли активировать режим настройки.
springBootLoaderJarPath — путь к JAR-файлу загрузчика Spring Boot. После активации режима настройки этот параметр становится обязательным.
Активация режима настройки требует указания пути к файлу JAR загрузчика Spring Boot, который необходим для динамической компиляции кода. Этот путь можно найти в каталоге Gradle или в проекте Maven. Если вы используете Spring Boot, вы можете загрузить зависимость, добавив compileOnly 'org.springframework.boot:spring-boot-loader'
в свой проект. Затем обновите проект, и Gradle автоматически загрузит зависимость. Вы можете найти соответствующий JAR-файл загрузчика в каталоге .gradle\caches\modules-2\files-2.1\org.springframework.boot\spring-boot-loader\
.
Значение по умолчанию: null.
compileDir — путь компиляции. Путь компиляции в проекте Gradle обычно находится в корневом каталоге build. Обычно этот параметр не требуется изменять.
Плагин автоматически получает текущий путь сборки проекта Gradle.
Значение по умолчанию — project.getBuildDir().
cacheDir — каталог кэша. Каталог, в котором плагин хранит файлы кэша во время работы.
Значение по умолчанию — new File(compileDir, «libs»).
То есть каталог libs в пути сборки.
cacheName — имя каталога кэша. Имя каталога кэша в каталоге cacheDir.
Значение по умолчанию — «sakuraCache».
Каталог sakuraCache в каталоге cacheDir.
buildDir — путь сборки. Путь, по которому плагин создаёт файл JAR после выполнения задачи bootJar.
Значение по умолчанию — new File(compileDir, «libs»), то есть каталог libs в пути сборки.
buildJarName — имя файла сборки JAR. Имя файла JAR, созданного после выполнения задачи bootJar.
Значение по умолчанию — имя проекта + версия проекта, например, если вы измените имя JAR или добавите суффикс JAR в конфигурации bootJar, вам может потребоваться вручную изменить этот параметр.
myLauncherName — имя класса запуска. Имя класса запуска, созданного плагином.
Значение по умолчанию — MyLauncher.
myLauncherPackageName — пакет класса запуска (пакет). Пакет класса запуска, созданный плагином.
Значение по умолчанию — com.sakura.hk.plugin.
pluginPathProperty — свойство JVM для получения пути плагина. Свойство, которое используется для получения пути к плагину при запуске JAR с параметром -Dsakura.plugin.path
. Например, System.getProperty("sakura.plugin.path")
возвращает значение null, тогда используется System.getProperty("user.dir")
для получения текущего пути запуска.
Значение по умолчанию — "sakura.plugin.path".
pluginPathProperty — свойство JVM для получения имени папки плагина. Свойство, используемое для получения имени папки плагина при запуске JAR с параметром -Dsakura.plugin.name
. Например, если System.getProperty("sakura.plugin.name")
возвращает значение null, используется имя папки, указанное в параметре pluginPathName.
Значение по умолчанию — "sakura.plugin.name".
pluginPathName — имя папки плагина по умолчанию. Не влияет на работу, если не активирован режим настройки. Можно указать имя папки плагина с помощью параметра -Dsakura.plugin.name
при запуске JAR. Используется значение по умолчанию, если System.getProperty("sakura.plugin.name")
возвращает null.
Значение по умолчанию — myPlugin.
suffix — суффикс файла сборки JAR. Суффикс, добавляемый к имени файла JAR после создания.
Используется для различения файлов JAR, созданных плагином, и файлов JAR Spring Boot.
Значение по умолчанию — sakura.
delCache — удаление файлов кэша. Указывает, удалять ли файлы кэша после завершения работы плагина.
true — удаляет файлы кэша (значение по умолчанию).
false — сохраняет файлы кэша.
type — тип упаковки. Выбор между JAR и WAR.
SakuraBootType.JAR (значение по умолчанию) или SakuraBootType.WAR (может содержать ошибки, рекомендуется использовать JAR). Текст запроса написан на языке Java.
Пример использования плагина Sakura Spring Boot
generateMyMainClassFile: изменить указанный класс запуска SpringBoot на класс запуска, сгенерированный задачей generateMyMainClassFile.
generateNewBuildJar: создать новый jar-пакет.
clearCache: удалить ли файлы кэша.
sakuraPlugInBuild: вызвать компиляцию проекта с помощью плагина sakura.
Пример находится в корневом каталоге Examples.
Модуль api определяет интерфейс ISample:
package com.sakura.hk.examples;
/**
* Образец примера
*
* @Author: sakura
* @Date: 2021/7/19
*/
public interface ISample {
public void getName();
public void getId();
}
Модуль plus-in реализует интерфейс api и регистрирует bean с использованием Spring:
package com.sakura.hk.examples;
/**
* @Author: Sakura
* @Date: 2021/7/19
*/
public class ASample implements ISample {
private String id = "A:001";
private String name =" Я зарегистрирован @Bean, я младший брат";
@Override
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "ASample{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
}
//*******************************************************************************
package com.sakura.hk.examples;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @Author: Sakura
* @Date: 2021/7/19
*/
@Configuration
public class Config {
@Bean
public ISample aSample() {
return new ASample();
}
}
package com.sakura.hk.examples;
import org.springframework.stereotype.Component;
/**
* @Author: Sakura
* @Date: 2021/7/19
*/
@Component
public class BSample implements ISample {
private String id = "B:001";
private String name ="Я зарегистрирован @Component, я хочу быть главным";
@Override
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "ASample{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
'}';
}
}
Основная программа main-progeam, объединяющая модуль api, требует вызова класса реализации:
В файле build.gradle настроен плагин для этого примера.
Реализован CSample как пример, который получает Bean через Exhibition и демонстрирует его. Код реализации примера:
package com.sakura.hk.examples.main.progeam;
import com.sakura.hk.examples.ISample;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.util.List;
/**
* @Author: Sakura
* @Date: 2021/7/19
*/
@Component
public class Exhibition {
@Autowired
private List<ISample> sampleList;
@PostConstruct
public void start() {
System.out.println(sampleList);
}
}
PS C:\sakura\sakura-springboot-plugin\Examples\main-progeam\build\libs> java -jar .\main-progeam-0.0.1-SNAPSHOT-sakura.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.7.RELEASE)
2021-07-19 23:11:51.800 INFO 8504 --- [ main] c.s.h.e.m.p.MainProgeamApplication : Starting MainProgeamApplication on DESKTOP-RDKKTNL with PID 8504 (C:\sakura\sakura-springboot-plugin\Examples\main-progeam\build\libs\main-progeam-0.0.1-SNAPSHOT-sakura.jar started by Sakura in
``` ## Часто задаваемые вопросы
## Версия
* Первая цифра — основная версия, обычно указывает на значительные изменения в функциональности или структуре.
* Средняя цифра — младшая версия, как правило, обозначает обновление функций.
* Последняя цифра — исправление ошибок, обычно это исправления ошибок.
## Быстрый старт
Скачайте проект для компиляции или загрузите скомпилированный jar-файл, измените содержимое файла **build.gradle** и отправьте его в официальный репозиторий Gradle для проверки.
* Добавление зависимостей:
```groovy
buildscript {
repositories {
// Локальный репозиторий или указанный каталог
mavenLocal()
}
dependencies {
// Добавление зависимостей
// Пример добавления jar из указанного каталога в качестве зависимости
// compile fileTree(dir:'../lib',includes:['*jar'])
// classpath fileTree(dir:'lib/sakura-springboot-plugin-0.1.1.jar')
classpath 'com.sakura.hk:sakura-springboot-plugin:Latest Version'
}
}
// Применение плагина
apply plugin: 'sakrua.springboot.plugin'
Запустите задачу sakuraSptingBoot в разделе sakuraPlugInBuild списка задач Gradle, чтобы выполнить упаковку.
После завершения упаковки файл jar в каталоге запуска myPlugin по умолчанию распознается как плагин.
Авторы основного проекта и авторы смежных проектов: sakrua Спасибо за ваш вклад.
// TODO обновить позже
Если вам нравится помощь, вы можете поддержать её, поставив ⭐Star, спасибо ^_^
Если у вас есть какие-либо вопросы или предложения, вы можете обсудить их в ISSUE или поделиться опытом. QQ группа: 15392541
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )