Ява 17
Весенняя платформа 6
Весенний ботинок 3
Динамическая маршрутизация
Сопоставление маршрутов, встроенное в Spring Handler Mapping
Сопоставление маршрутов по HTTP-запросу (путь, метод, заголовок, хост и т. д.)
Фильтры ограничены соответствующим маршрутом
Фильтры могут изменять нисходящий HTTP-запрос и HTTP-ответ (добавление/удаление заголовков, добавление/удаление параметров, перезапись пути, установка пути, Hystrix и т. д.).
API или конфигурация, управляемая
Поддерживает Spring Cloud DiscoveryClient
для настройки маршрутов.
Неразрешенная директива в <stdin> – include::https:///raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/docs/modules/ROOT/partials/building.adoc[]
Spring Cloud выпускается под неограниченной лицензией Apache 2.0 и следует стандартному процессу разработки Github, используя трекер Github для выявления проблем и объединяя запросы на включение в основной. Если вы хотите внести хотя бы что-то тривиальное, не стесняйтесь и следуйте приведенным ниже рекомендациям.
Прежде чем мы примем нетривиальное исправление или запрос на включение, нам нужно, чтобы вы подписали Лицензионное соглашение для участников. Подписание соглашения с автором не дает никому никаких прав на использование основного репозитория, но это означает, что мы можем принять ваши вклады, и если мы это сделаем, вы получите признание автора. Активных участников могут попросить присоединиться к основной команде и предоставить им возможность объединять запросы на включение.
Этот проект соответствует кодексу поведения участников Соглашения. Ожидается, что, участвуя, вы будете соблюдать этот кодекс. Пожалуйста, сообщите о неприемлемом поведении по адресу [email protected].
Ничто из этого не является необходимым для запроса на включение, но все они помогут. Их также можно добавить после исходного запроса на включение, но до слияния.
Используйте соглашения о формате кода Spring Framework. Если вы используете Eclipse, вы можете импортировать настройки форматтера, используя файл eclipse-code-formatter.xml
из проекта Spring Cloud Build. Если вы используете IntelliJ, вы можете использовать плагин форматирования кода Eclipse для импорта того же файла.
Убедитесь, что все новые файлы .java
содержат простой комментарий к классу Javadoc, по крайней мере, с тегом @author
идентифицирующим вас, и желательно, по крайней мере, с абзацем о том, для чего предназначен этот класс.
Добавьте комментарий заголовка лицензии ASF во все новые файлы .java
(скопируйте существующие файлы в проекте).
Добавьте себя в качестве @author
в файлы .java, которые вы существенно измените (а не только косметические изменения).
Добавьте немного Javadocs и, если вы измените пространство имен, некоторые элементы документа XSD.
Несколько модульных тестов тоже очень помогли бы — кто-то должен это сделать.
Если никто больше не использует вашу ветку, перебазируйте ее на текущую основную (или другую целевую ветку в основном проекте).
При написании сообщения о фиксации следуйте этим соглашениям. Если вы исправляете существующую проблему, добавьте Fixes gh-XXXX
в конце сообщения о фиксации (где XXXX — номер проблемы).
Spring Cloud Build поставляется с набором правил проверки стилей. Вы можете найти их в модуле spring-cloud-build-tools
. Наиболее примечательными файлами модуля являются:
└── источник ├── контрольный стиль │ └── checkstyle-suppressions.xml (3) └── главный └── ресурсы ├── checkstyle-header.txt (2) └── checkstyle.xml (1)
Правила Checkstyle по умолчанию
Настройка заголовка файла
Правила подавления по умолчанию
По умолчанию правила Checkstyle отключены . Чтобы добавить контрольный стиль в свой проект, просто определите следующие свойства и плагины.
<свойства> <maven-checkstyle-plugin.failsOnError>true</maven-checkstyle-plugin.failsOnError> (1) <maven-checkstyle-plugin.failsOnViolation>true </maven-checkstyle-plugin.failsOnViolation> (2) <maven-checkstyle-plugin.includeTestSourceDirectory>true </maven-checkstyle-plugin.includeTestSourceDirectory> (3) </свойства> <сборка> <плагины> <плагин> (4) <groupId>io.spring.javaformat</groupId> <artifactId>spring-javaformat-maven-plugin</artifactId> </плагин> <плагин> (5) <groupId>org.apache.maven.plugins</groupId> <artifactId>плагин maven-checkstyle</artifactId> </плагин> </плагины> <отчетность> <плагины> <плагин> (5) <groupId>org.apache.maven.plugins</groupId> <artifactId>плагин maven-checkstyle</artifactId> </плагин> </плагины> </отчетность> </сборка>
Сбой сборки из-за ошибок Checkstyle.
Не удается построить сборку из-за нарушений Checkstyle.
Checkstyle анализирует также исходники тестов.
Добавьте плагин Spring Java Format, который переформатирует ваш код, чтобы он соответствовал большинству правил форматирования Checkstyle.
Добавьте плагин checkstyle на этапы сборки и отчетности.
Если вам необходимо подавить некоторые правила (например, длина строки должна быть больше), вам достаточно определить файл в ${project.root}/src/checkstyle/checkstyle-suppressions.xml
с вашими подавлениями. Пример:
<?xml версия="1.0"?> <!DOCTYPE подавление PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN" "https://www.puppycrawl.com/dtds/suppressions_1_1.dtd"> <подавления> <suppress files=".*ConfigServerApplication.java" checks="HideUtilityClassConstructor"/> <suppress files=".*ConfigClientWatch.java" checks="LineLengthCheck"/> </подавления>
Рекомендуется скопировать форматы ${spring-cloud-build.rootFolder}/.editorconfig
и ${spring-cloud-build.rootFolder}/.springformat
в ваш проект. Таким образом, будут применены некоторые правила форматирования по умолчанию. Вы можете сделать это, запустив этот скрипт:
$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/.editorconfig -o .editorconfig
$ touch .springformat
Чтобы настроить Intellij, вам необходимо импортировать наши соглашения о кодировании, профили проверки и настроить плагин checkstyle. Следующие файлы можно найти в проекте Spring Cloud Build.
└── источник ├── контрольный стиль │ └── checkstyle-suppressions.xml (3) └── главный └── ресурсы ├── checkstyle-header.txt (2) ├── checkstyle.xml (1) └── интеллект ├── Intellij_Project_Defaults.xml (4) └── Intellij_Spring_Boot_Java_Conventions.xml (5)
Правила Checkstyle по умолчанию
Настройка заголовка файла
Правила подавления по умолчанию
Значения проекта по умолчанию для Intellij, которые применяют большинство правил Checkstyle.
Соглашения о стиле проекта для Intellij, которые применяют большинство правил Checkstyle.
Перейдите в File
→ Settings
→ Editor
→ Code style
. Там нажмите на иконку рядом с разделом Scheme
. Там щелкните значение Import Scheme
и выберите параметр Intellij IDEA code style XML
. Импортируйте файл spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml
.
Перейдите в File
→ Settings
→ Editor
→ Inspections
. Там нажмите на иконку рядом с разделом Profile
. Там нажмите Import Profile
и импортируйте файл spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml
.
Чтобы Intellij работал с Checkstyle, вам необходимо установить плагин Checkstyle
. Целесообразно также установить Assertions2Assertj
для автоматического преобразования утверждений JUnit.
Перейдите в File
→ Settings
→ Other settings
→ Checkstyle
. Там нажмите на значок +
в разделе Configuration file
. Там вам нужно будет определить, откуда следует выбирать правила стиля проверки. На изображении выше мы выбрали правила из клонированного репозитория Spring Cloud Build. Однако вы можете указать репозиторий GitHub Spring Cloud Build (например, для checkstyle.xml
: https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/main/resources/checkstyle.xml
). Нам необходимо предоставить следующие переменные:
checkstyle.header.file
— укажите файл Spring Cloud Build, spring-cloud-build-tools/src/main/resources/checkstyle-header.txt
либо в вашем клонированном репозитории, либо через https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt
URL.
checkstyle.suppressions.file
— подавления по умолчанию. Пожалуйста, укажите его в файле Spring Cloud Build, spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml
либо в вашем клонированном репозитории, либо через https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml
URL-адрес https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml
.
checkstyle.additional.suppressions.file
— эта переменная соответствует подавлениям в вашем локальном проекте. Например, вы работаете над spring-cloud-contract
. Затем укажите папку project-root/src/checkstyle/checkstyle-suppressions.xml
. Примером spring-cloud-contract
может быть: /home/username/spring-cloud-contract/src/checkstyle/checkstyle-suppressions.xml
.
Важный | Не забудьте установить для Scan Scope All sources , поскольку мы применяем правила проверки стиля для рабочих и тестовых источников. |
Spring Cloud Build включает в себя basepom:duplicate-finder-maven-plugin
, который позволяет помечать повторяющиеся и конфликтующие классы и ресурсы в пути к классам Java.
Поиск дубликатов включен по умолчанию и будет работать на этапе verify
вашей сборки Maven, но он вступит в силу в вашем проекте только в том случае, если вы добавите плагин duplicate-finder-maven-plugin
в раздел build
pom.xml
проекта.
< build >
< plugins >
< plugin >
< groupId >org.basepom.maven</ groupId >
< artifactId >duplicate-finder-maven-plugin</ artifactId >
</ plugin >
</ plugins >
</ build >
Для других свойств мы установили значения по умолчанию, как указано в документации плагина.
Вы можете легко их переопределить, но установив значение выбранного свойства с префиксом duplicate-finder-maven-plugin
. Например, установите duplicate-finder-maven-plugin.skip
значение true
, чтобы пропустить проверку дубликатов в вашей сборке.
Если вам нужно добавить ignoredClassPatterns
или ignoredResourcePatterns
в вашу настройку, обязательно добавьте их в раздел конфигурации плагина вашего проекта:
< build >
< plugins >
< plugin >
< groupId >org.basepom.maven</ groupId >
< artifactId >duplicate-finder-maven-plugin</ artifactId >
< configuration >
< ignoredClassPatterns >
< ignoredClassPattern >org.joda.time.base.BaseDateTime</ ignoredClassPattern >
< ignoredClassPattern >.*module-info</ ignoredClassPattern >
</ ignoredClassPatterns >
< ignoredResourcePatterns >
< ignoredResourcePattern >changelog.txt</ ignoredResourcePattern >
</ ignoredResourcePatterns >
</ configuration >
</ plugin >
</ plugins >
</ build >