Git Mirror расположен по адресу https://github.com/baomidou/dynamic-datasource.
Проект собирается с использованием 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
Проверка доступности проекта в 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 для сторонних библиотек.
Если выполнение 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-файлы, не содержащие конкретных элементов.
PR следует отправлять в Git-зеркало на Github, то есть https://github.com/baomidou/dynamic-datasource. CI, расположенный в Github Actions, выполнит соответствующие юнит-тесты для ветки PR под управлением OpenJDK 8+.
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.