#### What type of PR is this?
/kind cleanup
/area core
#### What this PR does / why we need it:
This PR upgrades to [PF4J 3.13.0](https://github.com/pf4j/pf4j/releases/tag/release-3.13.0).
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 PF4J 至 3.13.0
```
#### What type of PR is this?
/kind improvement
/area core
/milestone 2.20.x
#### What this PR does / why we need it:
修复竖向图片生成缩略图后会丢失方向信息展示为横向图片的问题
#### Which issue(s) this PR fixes:
Fixes#6802
#### Does this PR introduce a user-facing change?
```release-note
修复竖向图片生成缩略图后会丢失方向信息展示为横向图片的问题
```
#### What type of PR is this?
/kind cleanup
/area core
/milestone 2.20.x
#### What this PR does / why we need it:
This PR upgrades to jsoup 1.18.1. See https://github.com/jhy/jsoup/releases/tag/jsoup-1.18.1 for more.
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 jsoup 至 1.18.1
```
#### What type of PR is this?
/kind cleanup
/area core
/milestone 2.20.x
#### What this PR does / why we need it:
This PR upgrades to Lucene 9.12.0. See https://lucene.apache.org/core/9_12_0/changes/Changes.html for more.
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 Lucene 至 9.12.0
```
#### What type of PR is this?
/kind cleanup
/area core
/milestone 2.20.x
#### What this PR does / why we need it:
This PR upgrades to Guava 33.3.1-jre. See https://github.com/google/guava/releases/tag/v33.3.1 for more.
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 Guava 至 33.3.1-jre
```
#### What type of PR is this?
/kind cleanup
/area core
/milestone 2.17.x
#### What this PR does / why we need it:
See https://github.com/apache/lucene/releases/tag/releases%2Flucene%2F9.11.1 for more.
#### Does this PR introduce a user-facing change?
```release-note
升级 Lucene 至 9.11.1
```
#### What type of PR is this?
/kind bug
/area core
/milestone 2.17.x
#### What this PR does / why we need it:
升级 pf4j 至 3.12.0 版本以解决插件依赖解析不正确的问题
#### Which issue(s) this PR fixes:
Fixes#5616
#### Does this PR introduce a user-facing change?
```release-note
升级 pf4j 至 3.12.0 版本以解决插件依赖解析不正确的问题
```
#### What type of PR is this?
/kind cleanup
/area core
#### What this PR does / why we need it:
This PR upgrades SpringDoc to [2.5.0](https://github.com/springdoc/springdoc-openapi/releases/tag/v2.5.0).
#### Does this PR introduce a user-facing change?
```release-note
升级 SpringDoc 至 2.5.0
```
#### What type of PR is this?
/kind cleanup
/area core
#### What this PR does / why we need it:
This PR upgrades SpringDoc to [2.4.0](https://github.com/springdoc/springdoc-openapi/releases/tag/v2.4.0).
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 SpringDoc 至 2.4.0
```
#### 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 cleanup
/area core
#### What this PR does / why we need it:
This PR upgrades Pf4j to [3.11.0](https://github.com/pf4j/pf4j/releases/tag/release-3.11.0) regularlly.
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 PF4J 至 3.11.0
```
#### 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:
This PR upgrades Resilience4J to 2.2.0. See https://github.com/resilience4j/resilience4j/blob/v2.2.0/RELEASENOTES.adoc for more.
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 Resilience4j 至 2.2.0
```
#### What type of PR is this?
/kind improvement
/area core
#### What this PR does / why we need it:
This PR upgrades Lucene to 9.9.1. See https://lucene.apache.org/core/corenews.html#apache-lucenetm-991-available for more.
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 Lucene 至 9.9.1
```
#### 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 cleanup
/area core
/milestone 2.12.x
#### What this PR does / why we need it:
Upgrade to SpringDoc 2.3.0. See https://github.com/springdoc/springdoc-openapi/releases/tag/v2.3.0 for more.
#### Does this PR introduce a user-facing change?
```release-note
升级 SpringDoc 至 2.3.0
```
#### 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 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?
/kind cleanup
/area core
/milestone 2.10.0
#### What this PR does / why we need it:
Upgrade to [PF4J 3.10.0](https://github.com/pf4j/pf4j/releases/tag/release-3.10.0).
#### Does this PR introduce a user-facing change?
```release-note
升级依赖 PF4J 至 3.10.0
```
#### 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?
/kind improvement
/area core
/milestone 2.9.x
#### What this PR does / why we need it:
- Removes dependency `cn.shenyanchao.ik-analyzer:ik-analyzer:9.0.0` due to no significant effect for searching result.
- Customize our own analyzer with StandardTokenizer, HTMLStripCharFilter and LowerCaseFilterFactory.
Please be aware of that the default field to search has become to `content` instead of `title` + `excerpt` + `content`. If someone wants to search title only, use `title: halo` as query string. For more details, please refer to <https://lucene.apache.org/core/9_5_0/queryparser/org/apache/lucene/queryparser/flexible/standard/StandardQueryParser.html>.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/4455
#### Special notes for your reviewer:
#### Does this PR introduce a user-facing change?
```release-note
优化本地搜索引擎
```
#### 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 cleanup
#### What this PR does / why we need it:
This PR upgrades SpringDoc to 2.2.0 for OpenAPI 3.1 support. Please see https://github.com/springdoc/springdoc-openapi/releases/tag/v2.2.0 for more.
#### Special notes for your reviewer:
- Start Halo by using following command:
```bash
./gradlew bootRun --args="--spring.profiles.active=dev --halo.plugin.runtime-mode=deployment"
```
- Try to request <http://localhost:8090/swagger-ui.html> and check if the OpenAPI version is 3.1
#### Does this PR introduce a user-facing change?
```release-note
升级 SpringDoc 至 2.2.0
```
#### 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?
/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 improvement
/area core
#### What this PR does / why we need it:
Replace R2DBC MySQL driver to io.asyncer:r2dbc-mysql. See https://github.com/halo-dev/halo/issues/3804 for more.
Please note that there will be an error like below when starting up Halo on MacOS:
```java
2023-05-09T14:24:45.161+08:00 ERROR 4668 --- [ restartedMain] i.n.r.d.DnsServerAddressStreamProviders : Unable to load io.netty.resolver.dns.macos.MacOSDnsServerAddressStreamProvider, fallback to system defaults. This may result in incorrect DNS resolutions on MacOS. Check whether you have a dependency on 'io.netty:netty-resolver-dns-native-macos'. Use DEBUG level to see the full stack: java.lang.UnsatisfiedLinkError: failed to load the required native library
```
After manual test, I haven't found any problems caused by the error. And this only occurs on MacOS when developing.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/3804
#### Special notes for your reviewer:
Steps to test:
1. Start up a MySQL server, e.g.:
```bash
docker run -it --rm --name halodb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=openmysql -e MYSQL_DATABASE=halo mysql:8
```
3. Start Halo with mysql profile active
```bash
make -C console dev
./gradlew bootRun --args="--spring.profiles.active=dev,mysql --halo.plugin.runtime-mode=deployment"
```
5. Check the functionality of Halo
#### Does this PR introduce a user-facing change?
```release-note
替换 R2DBC MySQL 驱动为:io.asyncer:r2dbc-mysql
```
#### 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 feature
/area core
#### What this PR does / why we need it:
Use Gradle plugin `maven-publish` to publish Halo modules(`platform.application`, `platform.plugin` and `api`) to Maven central repository.
```bash
# Try to publish to Maven local repository.
./gradlew publish
# Really publish to Maven central repository.
./gradlew -Prelease publish -PossrhUsername=username -PossrhPassword=password
```
Note that currently we only support manually publishing.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/2730
#### 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:
See https://github.com/halo-dev/halo/issues/3600 for more.
#### Which issue(s) this PR fixes:
Fixes https://github.com/halo-dev/halo/issues/3600
#### Special notes for your reviewer:
We can follow the commands below to test it:
```bash
# Start up MariaDB
docker run -d --env MARIADB_USER=halo -p 3306:3306 --env MARIADB_PASSWORD=mariadb --env MARIADB_ROOT_PASSWORD=mariadb -e MARIADB_DATABASE=halo mariadb:latest
# Start up Halo
make -C console dev
./gradlew bootRun --args="--spring.profiles.active=dev,mariadb"
```
#### Does this PR introduce a user-facing change?
<!--
如果当前 Pull Request 的修改不会造成用户侧的任何变更,在 `release-note` 代码块儿中填写 `NONE`。
否则请填写用户侧能够理解的 Release Note。如果当前 Pull Request 包含破坏性更新(Break Change),
Release Note 需要以 `action required` 开头。
If no, just write "NONE" in the release-note block below.
If yes, a release note is required:
Enter your extended release note in the block below. If the PR requires additional action from users switching to the new release, include the string "action required".
-->
```release-note
升级至 MariaDB R2DBC connector 1.1.4
```
#### 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
重构项目结构
```