# java11-examples
**Repository Path**: maggie86323/java11-examples
## Basic Information
- **Project Name**: java11-examples
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-04-08
- **Last Updated**: 2021-04-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# java11-examples

## 模块化
从Java 9开始引入了模块化的概念,因此使用Java11也需要以模块化的方式进行项目的构建和编译。
### 已有的Maven项目
为了将项目迁移到最新的Java版本11,强烈建议尽可能多地更新插件和依赖项到最新的稳定版本。
如果使用旧版本,许多插件(如编译器插件,`surefire`或`failsafe`)与Java 9不兼容。
此外,许多库在不迁移到最新版本的情况下也不兼容。
确保你在主POM中配置了版本插件:
```xml
org.codehaus.mojo
versions-maven-plugin
2.5
false
```
此插件有助于查找模块的最新插件或依赖版本,打开终端并执行此命令以查找你必须更新的插件版本:
```shell
mvn versions:display-plugin-updates
```
### Maven项目支持
Java 11最重要的插件是编译器插件,surefire(用于单元测试)和failsafe (用于集成测试)。
启用Java11语言支持:
```xml
11
${java.version}
${java.version}
```
为了能够使用Java 9的模块系统,`maven-compiler-plugin`版本`3.6.1`或更高版本是必需的。
```xml
org.apache.maven.plugins
maven-compiler-plugin
3.8.0
11
```
请`release`配置添加到编译器插件中,这是一个新的编译器参数,用于替换`source`和`target`版本参数:
对于`surefire`和`failsafe`插件,我们添加了一个额外的参数,`--illegal-access=permit`以允许第三方库的所有反射访问:
```xml
org.apache.maven.plugins
maven-surefire-plugin
2.22.0
--illegal-access=permit
org.apache.maven.plugins
maven-failsafe-plugin
2.22.0
--illegal-access=permit
```
只有在依赖项大量使用反射时才需要这样做,如果你不确定是否需要这个,如果你的测试遇到麻烦,可以添加配置argLine选项。
### Spring Boot项目支持
对于Spring Boot项目,`spring boot`版本更新到`2.1.0`或更高版本是必需的。
```xml
org.springframework.boot
spring-boot-starter-web
${spring.boot.version}
```
### 更新依赖
接下来需要更新不兼容的依赖了。
## 参考
* [将Maven项目迁移到Java 11](https://www.jdon.com/49937)
* [Migrate Maven Projects to Java 11](https://winterbe.com/posts/2018/08/29/migrate-maven-projects-to-java-11-jigsaw/)