一,首先保证 idea 的文件编码全是 UTF-8
二,每个子模块的 pom :
properties
标签要包含:
<properties>
<!-- 根据你的 java 版本选择 -->
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<!-- 一定包含这 3 项 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>
以上是为了防止 微服务项目 读取 nacos 等配置中心的配置文件时,或者 xml 日志配置文件时, 抛出 文件格式编码 的异常;
然后在 pom 的末尾,加上 build
标签里的内容:
<dependencies>
........
</dependencies>
<build>
<finalName>order-service</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
这是为了解决 打包后,java -jar
时找不到 主清单的异常;
但这里特别提醒,如果你的子模块没有启动类,而是一些 抽离出的公共的类,比如 entity 实体公共类、公共的工具类 等等,你需要把上述代码中的 executions
标签及其子标签都干掉,因为你不需要启动类,否则打包会提示你找不到启动类;
三,打包
第一种方式:对每个子模块,执行 mvn clean install
注意,最好先 clean,不然你也不知道有些地方是否被覆盖
第二种方式:打开 idea 右侧按钮,在父工程下,lifecycle 下点 package
四,执行 jar
比如:nohup java -Dfile.encoding=UTF-8 -jar order-service-0.0.1-SNAPSHOT.jar &
这里的 nohup
是为了防止命令行窗口关闭程序被终止,&
是为了后台运行,而 -Dfile.encoding=UTF-8
也必须加上,否则程序内部的一些配置文件仍然可能报关于中文字符集的异常。