如何在 Maven 中配置编码?

2022-08-31 04:26:02

当我在我的多模块maven项目上运行时,我总是得到以下输出:maven install

[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!

所以,我在谷歌上搜索了一下,但我所能找到的只是我必须添加:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

...到我的pom.xml。但它已经存在(在父级中)。pom.xml

配置 maven-resources-plugin 或 maven-compiler-plugin 也不会修复它。<encoding>

那么问题出在哪里呢?


答案 1

好的,我已经找到了问题。

我使用一些报告插件。在我发现的故障安全maven插件的文档中,配置 - 当然 - 默认使用。<encoding>${project.reporting.outputEncoding}

因此,我将该属性添加为该元素的子元素,现在一切都很好:project

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>

另请参见 http://maven.apache.org/general.html#encoding-warning


答案 2

这将是对以前的补充,如果有人遇到扫描字母的问题,而上面的解决方案无法解决。

如果 java 源文件包含扫描字母,则需要由用于编译的 Java 正确解释它们。(例如,常量中使用的扫描字母)

即使文件以 UTF-8 格式存储,并且 Maven 配置为使用 UTF-8,Maven 使用的 System Java 仍将使用系统默认值(例如,在 Windows 中:cp1252)。

这只能通过 maven 运行测试(可能在测试中打印这些常量的值) 可见。打印的扫描字母将显示为“< ?>”)如果测试不正确,这将损坏类文件作为编译结果,并且不会被注意到。

为防止出现这种情况,您必须将用于编译的 Java 设置为使用 UTF-8 编码。在maven pom中具有编码设置是不够的.xml,您需要设置环境变量:JAVA_TOOL_OPTIONS = -Dfile.encoding= UTF8

此外,如果在 Windows 中使用 Eclipse,则可能需要设置除此编码之外使用的编码(如果您通过 eclipse 运行单个测试)。


推荐