#### What type of PR is this?
/area core
/kind improvement
/milestone 2.15.0
#### What this PR does / why we need it:
升级所有预设插件的版本。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind cleanup
/area core
#### What this PR does / why we need it:
This PR adds support for generating API docs into project and generate API client according the API docs.
To generate/update latest API docs, execute the following command:
```bash
./gradlew clean generateOpenApiDocs
```
To generate/update latest API client, execute the following command:
```bash
make -C ui api-client-gen
```
Meanwhile, I also remove the lint on API client due to unnecessary.
Supersedes of https://github.com/halo-dev/halo/pull/5637
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind cleanup
/area core
#### What this PR does / why we need it:
This PR collects all Gradle plugin versions into root build.gradle for easy management.
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind chore
/area core
#### What this PR does / why we need it:
I get the following errors when I develop Halo in JDK 21:
```bash
FAILURE: Build failed with an exception.
* What went wrong:
Could not determine the dependencies of task ':application:bootRun'.
> Could not resolve all dependencies for configuration ':application:runtimeClasspath'.
> Failed to calculate the value of task ':application:compileJava' property 'javaCompiler'.
> No matching toolchains found for requested specification: {languageVersion=17, vendor=any, implementation=vendor-specific} for MAC_OS on aarch64.
> No locally installed toolchains match and toolchain download repositories have not been configured.
```
This PR removes the Java toolchain configuration and adds source and target compatibility to Java 17, allowing developers to develop Halo in Java 17 or higher versions.
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area core
/milestone 2.13.0
/kind improvement
#### What this PR does / why we need it:
更新预设插件的版本。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind cleanup
/area core
/milestone 2.13.x
#### What this PR does / why we need it:
Upgrade Spring Boot to [3.2.3](https://github.com/spring-projects/spring-boot/releases/tag/v3.2.3).
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 Spring Boot 至 3.2.3
```
#### What type of PR is this?
/kind improvement
/area core
#### What this PR does / why we need it:
See https://github.com/spring-projects/spring-boot/releases/tag/v3.2.2 for more.
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 Spring Boot 至 3.2.2
```
#### What type of PR is this?
/kind bug
/area core
/milestone 2.11.x
#### What this PR does / why we need it:
This PR upgrades to SpringDoc 2.2.1-SNAPSHOT to resolve the problem of Swagger API doc display errors.
#### Does this PR introduce a user-facing change?
```release-note
升级 SpringDoc 至 2.2.1-SNAPSHOT 以解决部分 API 文档无法正常使用的问题
```
#### What type of PR is this?
/kind cleanup
/area core
/milestone 2.11.x
#### What this PR does / why we need it:
- Upgrade to Spring Boot 3.2.0-RC2.
- Fix unit test errors due to upgrading.
See https://github.com/spring-projects/spring-boot/releases/tag/v3.2.0-RC2 for more.
#### Does this PR introduce a user-facing change?
Anyone who is using H2 database and wants to upgrade this version has to backup and restore Halo or upgrade old h2 database file manually.
```release-note
[Action Required] 升级 Spring Boot 至 3.2.0-RC2
```
#### What type of PR is this?
/kind bug
/area core
#### What this PR does / why we need it:
Currently, some Windows developers using GBK as character encoding are unable to build project, please see https://github.com/halo-dev/halo/issues/4771 for more.
Because the source code are using UTF-8 character encoding, the `javadoc`, `compileJava`, `compileTestJava` and `delombok` tasks will use the default character encoding GBK to handle the sources, which prevents the `:api:javadoc` task from running properly.
At the same time, we thank to @DaiYuANg for his first proposed solution in https://github.com/halo-dev/halo/pull/4517.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/4771
#### Special notes for your reviewer:
Validate the result by executing command `./gradlew clean build -x check` on Windows environment.
#### Does this PR introduce a user-facing change?
```release-note
修复在部分 Windows 开发者无法正常构建 Halo 的问题
```
#### What type of PR is this?
/kind cleanup
#### What this PR does / why we need it:
Upgrade to Spring Boot 3.1.5. See https://github.com/spring-projects/spring-boot/releases/tag/v3.1.5 for more.
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 Spring Boot 至 3.1.5
```
#### What type of PR is this?
/area core
/kind improvement
/milestone 2.10.x
#### What this PR does / why we need it:
修改应用市场插件的版本为 [1.0.0-beta.2](https://github.com/halo-dev/plugin-app-store/releases/tag/v1.0.0-beta.2)
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/area core
/kind improvement
/milestone 2.10.x
#### What this PR does / why we need it:
添加 https://github.com/halo-dev/plugin-app-store 作为预设插件。
#### Does this PR introduce a user-facing change?
```release-note
添加应用市场预设插件
```
#### What type of PR is this?
/kind cleanup
/area core
/milestone 2.10.0
#### What this PR does / why we need it:
Upgrade to Spring Boot [3.1.4](https://github.com/spring-projects/spring-boot/releases/tag/v3.1.4).
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 Spring Boot 至 3.1.4
```
#### What type of PR is this?
/area core
/kind improvement
/milestone 2.10.x
#### What this PR does / why we need it:
升级所有预设插件的版本。
#### Special notes for your reviewer:
执行 `./gradlew downloadPluginPresets` 检查是否能够正常下载。
#### Does this PR introduce a user-facing change?
```release-note
升级所有预设插件的版本。
```
#### What type of PR is this?
/area core
/kind cleanup
#### What this PR does / why we need it:
修改预设插件的下载地址,目前四个预设插件的仓库都已经转移到 halo-dev 组织。
#### Special notes for your reviewer:
需要测试 `./gradlew downloadPluginPresets` 是否能够正常下载预设插件。
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind cleanup
/area core
/milestone 2.9.x
#### What this PR does / why we need it:
This PR upgrades Spring Boot to 3.1.3. See https://github.com/spring-projects/spring-boot/releases/tag/v3.1.3 for more.
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 Spring Boot 至 3.1.3
```
#### What type of PR is this?
/kind feature
/area core
/milestone 2.9.x
#### What this PR does / why we need it:
Support restarting Halo and enable restart endpoint by default.
Restart endpoint detail:
request uri: `/actuator/restart`
request method: `POST`
Please note that memory usage may slightly increase after restarting Halo.
#### Does this PR introduce a user-facing change?
```release-note
支持在线重启 Halo。
```
#### What type of PR is this?
/kind cleanup
/area core
/milestone 2.8.x
#### What this PR does / why we need it:
Bump plugin preset. See https://github.com/halo-sigs/plugin-comment-widget/releases/tag/v1.7.0 for more.
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind cleanup
/area core
/milestone 2.8.x
#### What this PR does / why we need it:
Upgrade Spring Boot 3.1.2. See https://github.com/spring-projects/spring-boot/releases/tag/v3.1.2 for more.
#### Does this PR introduce a user-facing change?
```release-note
升级 Spring Boot 至 3.1.2。
```
#### What type of PR is this?
/area plugin
/area core
/milestone 2.7.x
#### What this PR does / why we need it:
Update preset plugins version
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind cleanup
/area core
/milestone 2.7.x
#### What this PR does / why we need it:
Upgrade Spring Boot to 3.1.1. See https://github.com/spring-projects/spring-boot/releases/tag/v3.1.1 for more.
#### Does this PR introduce a user-facing change?
```release-note
升级 Spring Boot 至 3.1.1
```
#### What type of PR is this?
/kind feature
/area core
#### What this PR does / why we need it:
This PR introduces https://github.com/resilience4j/resilience4j to archive the feature. The login endpoint has limited login failures at a rate of 3 per minute.
See https://github.com/halo-dev/halo/issues/4044 for more.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/4044
#### Special notes for your reviewer:
1. Start Halo.
2. Try to login with incorrect credential 4 times
3. Check the response.
#### Does this PR introduce a user-facing change?
```release-note
增加登录失败次数限制功能
```
#### What type of PR is this?
/kind cleanup
/area core
/milestone 2.6.x
#### What this PR does / why we need it:
Upgrade to Spring Boot 3.1.0, please refer to <https://github.com/spring-projects/spring-boot/releases/tag/v3.1.0>.
#### Does this PR introduce a user-facing change?
```release-note
升级 Spring Boot 至 3.1.0
```
#### What type of PR is this?
/kind cleanup
/area core
#### What this PR does / why we need it:
Upgrade to Spring Boot 3.0.6.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/3829
#### Does this PR introduce a user-facing change?
```release-note
升级 Spring Boot 至 3.0.6
```
#### What type of PR is this?
/kind cleanup
#### What this PR does / why we need it:
Upgrade to plugin-comment-widget 1.5.0.
#### Does this PR introduce a user-facing change?
```release-note
None
```
#### What type of PR is this?
/kind cleanup
/area core
#### What this PR does / why we need it:
This PR totally refactor project structure for a better plugin development. Now we can maintain and publish api and platform modules at Halo application side, which will be references by plugins.
Currently, we can execute command `./gradlew clean publish` to publish api and platform modules into **local** Maven repository, so that we can refer these dependencies (`run.halo.tools.platform:plugin:2.4.0-SNAPSHOT` and `run.halo.app:api:2.4.0-SNAPSHOT`) in plugin projects.
I will make another pull request to publish api library and platforms into Maven central repository.
**Modules explanation**:
- API module contains common classes which might be used by plugins.
- Plugin Platform module contains dependency declarations of other plugin API modules.
- Application Platform module contains dependency declarations application module might uses.
If we want to build application only(exclude check and jar), we have to execute the command below:
```bash
./gradlew clean :application:build -x :application:check -x :application:jar
```
The executable Jar will be generated at folder `application/build/libs/`.
If we want to build a Docker image, we could execute the command below:
```bash
docker build -t johnniang/halo:project-structure .
# Test the Docker image
docker run -it --rm -p8090:8090 johnniang/halo:project-structure
```
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2730
#### Special notes for your reviewer:
#### Does this PR introduce a user-facing change?
```release-note
重构项目结构
```