1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Cutie_Sakura-sakura-springboot-plugin

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Инженерное введение

Проект Spring Boot будет расширен и преобразован в Gradle-плагин с поддержкой плагинов. Это позволит динамически загружать JAR-файлы из указанного каталога как зависимости во время выполнения, обеспечивая эффект разработки на основе плагинов.

Это похоже на использование внешних зависимостей lib, где JAR-файлы плагинов автоматически загружаются как зависимости при запуске. Также это похоже на внешние проекты lib, которые помещают JAR-файлы плагинов во внешний каталог lib. Однако после запуска эти JAR-файлы не загружаются.

С помощью этого плагина можно реализовать автоматическую загрузку плагинов без изменения исходного JAR-файла при его запуске.


Дополнительные параметры конфигурации см. в консоли.

Особенности и функции

  • Плагин соответствует многомодульной разработке в IDE, обеспечивая идентичный опыт и функциональность.
  • Быстрый и удобный процесс добавления, приносящий долгосрочные преимущества.
  • Конфигурация плагина позволяет интегрировать его в проект Spring Boot.
  • На базе Spring Boot можно разрабатывать плагины, расширяя возможности проекта и позволяя создавать различные плагины для разных проектов.
  • В плагинах можно использовать аннотации Spring для определения компонентов и внедрения зависимостей.
  • Поддержка разработки REST API в плагинах.
  • Возможность определения постоянного слоя доступа в плагине.
  • Следование основному интерфейсу программы для разработки любых расширений.
  • Использование аннотаций для расширения бизнес-сценариев и использование координат для точного соответствия сценариям.
  • Создание пользовательских интерфейсов расширения. Пользователи могут расширять дополнительные функции на зарезервированных интерфейсах.
  • Обеспечение взаимодействия между плагинами.
  • Поддержка документации по плагинам: Swagger и SpringDoc.
  • Разработка настраиваемых перехватчиков в плагинах.

Параметры конфигурации

Имя Значение по умолчанию Описание Требуется ли настройка
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 указывает, следует ли активировать режим настройки.

    • true — активирует режим настройки.
    • false — отключает режим настройки (значение по умолчанию).
  • 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-пакет.

      • Создаёт jar-файл, настроенный плагином sakrua.
    • clearCache: удалить ли файлы кэша.

      • Очищает файлы кэша, созданные во время работы плагина sakura.
    • sakuraPlugInBuild: вызвать компиляцию проекта с помощью плагина sakura.

      • Является точкой входа для работы плагина, аналогично задаче bootJar. Теперь при упаковке выполняется sakuraPlugInBuild вместо bootJar.

Пример

Пример находится в корневом каталоге Examples.

Определение

  • api: интерфейсный модуль, определяющий некоторые интерфейсы.
  • main-progeam: основная программа, объединяющая модуль api и требующая вызова класса реализации.
  • plus-in: реализация интерфейса api.

Реализация

Модуль 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:

  • Использует @Bean для регистрации ASample.
    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();
    }

}
  • Использует @Component для регистрации BSample.
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 Спасибо за ваш вклад.

Планы развития

  • Не открывать пользовательский режим, динамически определять каталог плагина
  • Определять несколько каталогов
  • Настраивать правила фильтрации плагинов
  • Написание документации высокого уровня ==>> 40%
  • Подготовка логотипа
  • Редактирование примеров
  • Редактирование описания принципа работы плагина
  • Добавить проверку лицензии, предотвратить нарушение механизма проверки лицензии исходного проекта путём внедрения плагина.

Объяснение принципа работы плагина

// TODO обновить позже

Поддержка

Если вам нравится помощь, вы можете поддержать её, поставив ⭐Star, спасибо ^_^


Техническое общение

Если у вас есть какие-либо вопросы или предложения, вы можете обсудить их в ISSUE или поделиться опытом. QQ группа: 15392541

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Пользовательский плагин Gradle позволяет расширить поддержку разработки на основе плагинов для проекта Spring Boot. Развернуть Свернуть
LGPL-3.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/Cutie_Sakura-sakura-springboot-plugin.git
git@api.gitlife.ru:oschina-mirror/Cutie_Sakura-sakura-springboot-plugin.git
oschina-mirror
Cutie_Sakura-sakura-springboot-plugin
Cutie_Sakura-sakura-springboot-plugin
master