爪哇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
網址。
checkstyle.suppressions.file
- 預設抑制。請將其指向克隆儲存庫中或透過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 >