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

OSCHINA-MIRROR/baomidou-dynamic-datasource-spring-boot-starter

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
CONTRIBUTING.md 7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 22.04.2025 19:33 8ac848f

1. Клонирование репозитория

Git Mirror расположен по адресу https://github.com/baomidou/dynamic-datasource.

2. Запуск тестов

Проект собирается с использованием OpenJDK 17, а результаты сборки предназначены для OpenJDK 8.

При импорте проекта в IntelliJ IDEA или VSCode, уровень языка проекта в IDE должен быть установлен на 8. Для отдельного подмодуля com.baomidou:dynamic-datasource-spring-boot3-starter уровень языка в IDE должен быть установлен на 17.

Перед отправкой Pull Request (PR) необходимо выполнить команду ./mvnw -T1C clean test с использованием OpenJDK 17 для проверки, что изменения не нарушили юнит-тесты. Если необходимо, добавьте или измените юнит-тесты.

Предположим, что вкладчик находится на новом экземпляре Ubuntu 22.04.3 LTS, он может использовать следующие bash-команды для управления JDK и инструментами с помощью SDKMAN! и выполнения юнит-тестов.

sudo apt install unzip zip curl sed -y
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java 17.0.8-ms
sdk use java 17.0.8-ms

git clone git@github.com:baomidou/dynamic-datasource.git
cd ./dynamic-datasource/
./mvnw -T1C clean test

2.1. Выполнение nativeTest с использованием GraalVM Native Image

Проверка доступности проекта в GraalVM Native Image осуществляется с помощью Maven Plugin подпроекта GraalVM Native Build Tools. Это достигается запуском юнит-тестов в JVM, маркировкой тестов junit-platform-unique-ids*, и последующим запуском nativeTest для проверки покрытия юнит-тестов в GraalVM Native Image. Не используйте библиотеки тестирования, такие как io.kotest:kotest-runner-junit5-jvm:5.5.4, которые не могут обнаружить тесты в режиме test listener.Проект определяет Maven Profile nativeTestInSpringBoot для выполнения nativeTest для модуля dynamic-datasource-spring-boot3-starter.

Предположим, что вкладчик находится на новом экземпляре Ubuntu 22.04.3 LTS, он может использовать следующие bash-команды для управления JDK и инструментами с помощью SDKMAN! и выполнения nativeTest для подмодуля dynamic-datasource-spring-boot3-starter.

sudo apt install unzip zip curl sed -y
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"
sdk install java 21.0.1-graalce
sdk use java 21.0.1-graalce
sudo apt-get install build-essential libz-dev zlib1g-dev -y

git clone git@github.com:baomidou/dynamic-datasource.git
cd ./dynamic-datasource/
./mvnw -PnativeTestInSpringBoot -T1C -e clean test

Когда вкладчик обнаруживает отсутствие метаданных GraalVM Reachability для сторонних библиотек, не связанных с dynamic-datasource, он должен открыть новый issue на https://github.com/oracle/graalvm-reachability-metadata и отправить pull request (PR) с отсутствующими метаданными GraalVM Reachability для сторонних библиотек.

2.2 Генерация или объединение метаданных GraalVM Reachability для юнит-тестов

Если выполнение nativeTest завершается неудачей, следует сгенерировать начальные метаданные GraalVM Reachability для юнит-тестов и вручную скорректировать их для устранения ошибок nativeTest. Если необходимо, используйте аннотацию org.junit.jupiter.api.condition.DisabledInNativeImage или системную переменную org.graalvm.nativeimage.imagecode для отключения части юнит-тестов при выполнении в GraalVM Native Image.

Не следует писать возможные nativeTest для функций SpEL, ссылаясь на открытый https://github.com/spring-projects/spring-framework/issues/29548.Проект определяет профиль Maven generateMetadata, который позволяет выполнить юнит-тесты с использованием агента отслеживания GraalVM в обычном JVM и сгенерировать или объединить существующие файлы метаданных GraalVM Reachability в определенном каталоге. Этот процесс можно легко выполнить с помощью следующей команды bash. Вкладчики могут все еще потребовать вручную скорректировать конкретные JSON-элементы и в нужное время скорректировать профиль Maven и цепочку фильтров агента отслеживания GraalVM.

Вот пример команды для генерации условных метаданных GraalVM Reachability для dynamic-datasource-spring-boot3-starter.

Для метаданных GraalVM Reachability, используемых отдельно для тестовых классов и тестовых файлов, вкладчики должны поместить их в соответствующий подмодуль в каталоге ${project.basedir}/src/test/resources/META-INF/native-image/${project.artifactId}-test-metadata/. ${} содержит обычные системные переменные POM 4.0, которые следует заменить.

git clone git@github.com:baomidou/dynamic-datasource.git
cd ./dynamic-datasource/
./mvnw -PgenerateMetadata -DskipNativeTests -e -T1C clean test native:metadata-copy

Пожалуйста, вручную удалите JSON-файлы, не содержащие конкретных элементов.

3. PR

PR следует отправлять в Git-зеркало на Github, то есть https://github.com/baomidou/dynamic-datasource. CI, расположенный в Github Actions, выполнит соответствующие юнит-тесты для ветки PR под управлением OpenJDK 8+.

1
https://api.gitlife.ru/oschina-mirror/baomidou-dynamic-datasource-spring-boot-starter.git
git@api.gitlife.ru:oschina-mirror/baomidou-dynamic-datasource-spring-boot-starter.git
oschina-mirror
baomidou-dynamic-datasource-spring-boot-starter
baomidou-dynamic-datasource-spring-boot-starter
master