爪哇17
Spring框架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 跟踪器处理问题并将拉取请求合并到 main 中。如果您想贡献一些微不足道的东西,请不要犹豫,但请遵循以下准则。
在我们接受重要的补丁或拉取请求之前,我们需要您签署贡献者许可协议。签署贡献者协议并不授予任何人对主存储库的提交权,但这确实意味着我们可以接受您的贡献,如果我们这样做,您将获得作者信用。活跃的贡献者可能会被要求加入核心团队,并被赋予合并拉取请求的能力。
该项目遵守贡献者契约行为准则。通过参与,您应该遵守此准则。请将不可接受的行为报告给 [email protected]。
这些对于拉取请求来说都不是必需的,但它们都会有所帮助。它们也可以在原始拉取请求之后、合并之前添加。
使用 Spring 框架代码格式约定。如果您使用 Eclipse,则可以使用 Spring Cloud Build 项目中的eclipse-code-formatter.xml
文件导入格式化程序设置。如果使用 IntelliJ,您可以使用 Eclipse Code Formatter 插件导入相同的文件。
确保所有新的.java
文件都有一个简单的 Javadoc 类注释,其中至少有一个@author
标记来标识您,并且最好至少有一段说明该类的用途。
将 ASF 许可证头注释添加到所有新的.java
文件(从项目中的现有文件复制)
将您自己作为@author
添加到您进行重大修改(不仅仅是外观更改)的 .java 文件中。
添加一些 Javadocs,如果更改命名空间,还添加一些 XSD 文档元素。
一些单元测试也会有很大帮助——必须有人来做。
如果没有其他人在使用您的分支,请根据当前主分支(或主项目中的其他目标分支)重新调整其基础。
编写提交消息时请遵循以下约定,如果您要修复现有问题,请在提交消息末尾添加Fixes gh-XXXX
(其中 XXXX 是问题编号)。
Spring Cloud Build 附带了一组 checkstyle 规则。您可以在spring-cloud-build-tools
模块中找到它们。该模块下最值得注意的文件是:
└── 来源 ├── 格子风格 │ └── checkstyle-suppressions.xml (3) └── 主要 └── 资源 ├── checkstyle-header.txt (2) └── checkstyle.xml (1)
默认 Checkstyle 规则
文件头设置
默认抑制规则
默认情况下禁用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-plugin</artifactId> </插件> </插件> <报告> <插件> <插件> (5) <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> </插件> </插件> </报告> </构建>
由于 Checkstyle 错误而导致构建失败
因 Checkstyle 违规而导致构建失败
Checkstyle 还分析测试源
添加 Spring Java Format 插件,该插件将重新格式化您的代码以通过大多数 Checkstyle 格式化规则
将 checkstyle 插件添加到您的构建和报告阶段
如果您需要抑制某些规则(例如,行长度需要更长),那么您只需在${project.root}/src/checkstyle/checkstyle-suppressions.xml
下定义一个包含抑制的文件就足够了。例子:
<?xml 版本=“1.0”?> <!DOCTYPE 抑制 PUBLIC “-//小狗爬行//DTD 抑制 1.1//EN” “https://www.puppycrawl.com/dtds/suppressions_1_1.dtd”> <抑制> <抑制文件=“.*ConfigServerApplication.java”检查=“HideUtilityClassConstructor”/> <抑制文件=“.*ConfigClientWatch.java”检查=“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 规则
应用大多数 Checkstyle 规则的 Intellij 项目样式约定
转到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 存储库中选择了规则。但是,您可以指向 Spring Cloud Build 的 GitHub 存储库(例如,对于checkstyle.xml
: https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/main/resources/checkstyle.xml
://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/ https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/main/resources/checkstyle.xml
)。我们需要提供以下变量:
checkstyle.header.file
- 请将其指向克隆存储库中或通过https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/main/resources/checkstyle-header.txt
中的 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
网址。
checkstyle.suppressions.file
- 默认抑制。请将其指向克隆存储库中或通过https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/main/spring-cloud-build-tools/src/checkstyle/checkstyle-suppressions.xml
中的 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。
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 类路径上标记重复和冲突的类和资源。
默认情况下,重复查找器处于启用状态,并将在 Maven 构建的verify
阶段运行,但只有在将duplicate-finder-maven-plugin
添加到项目pom.xml
的build
部分时,它才会在您的项目中生效。
< 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 >