当我在多模块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>
型
. to my pom.xml.但它已经存在(在父pom.xml
中)。
为maven-resources-plugin或maven-compiler-plugin配置<encoding>
也不能解决这个问题。
那有什么问题
7条答案
按热度按时间vom3gejh1#
好的,我找到问题了。
我使用一些报告插件。在
failsafe-maven-plugin
的文档中,我发现<encoding>
配置-当然-默认使用${project.reporting.outputEncoding}
。所以我添加了这个属性作为
project
元素的子元素,现在一切都好了:字符串
另见http://maven.apache.org/general.html#encoding-warning
cidc1ykv2#
这将是除了以前,如果有人遇到一个问题,与scandic字母是解决不了上面的解决方案。
如果java源文件包含scandic字母,则需要由用于编译的Java正确解释它们。(例如常数中使用的Scandic字母)
即使这些文件是以UTF-8格式存储的,并且Maven被配置为使用UTF-8,Maven使用的系统Java仍然会使用系统默认值(例如:在Windows中:cp1252)。
只有通过maven运行测试时才能看到这一点(可能会在测试中打印这些常量的值)。打印出来的斯堪迪克字母会显示为'<?>')如果没有正确测试,这将破坏类文件作为编译结果,并不被注意。
为了防止这种情况,您必须将编译用Java设置为使用UTF-8编码。在maven pom.xml中有编码设置是不够的,你需要设置环境变量:JAVA_TOOL_OPTIONS = -Dfile.encoding=UTF8
此外,如果在Windows中使用Eclipse,您可能需要设置除此之外的编码(如果您通过Eclipse运行单独的测试)。
jv4diomz3#
如果您合并上面的答案,最后为UTF-8配置的pom.xml应该是这样的。
pom.xml
字符串
y0u0uwnf4#
似乎人们将内容编码与构建的文件/资源编码混合在一起。只有专业的属性是不够的。
-Dfile.encoding=UTF8
无效。为了避免编码问题,您应该遵循以下简单规则1.设置maven编码,如上所述:
字符串
1.在代码中处理文件、字符串、IO时,始终显式地设置编码。如果您不遵循此规则,您的应用程序将依赖于环境。
-Dfile.encoding=UTF8
负责运行时环境配置,但我们不应该依赖它。如果您有数千个客户端,则需要花费更多的精力来配置系统并查找由此产生的问题。您只是对它有一个额外的依赖关系,可以通过显式设置来避免。Java中大多数使用默认编码的方法都因此被标记为已弃用。1.确保您正在使用的内容也是您期望的相同编码。如果不是,前面的步骤都无关紧要!例如,如果一个文件的编码不是UTF8,但您期望它,它将不会被正确处理。要检查Linux上的文件编码:
$ file --mime F_PRDAUFT.dsv
1.强制客户端/服务器在请求/响应中显式设置编码,以下是示例:
型
希望这对某人有用。
n3ipq98p5#
试试这个:
字符串
clj7thdc6#
在我的例子中,我使用的是
maven-dependency-plugin
,所以为了解决这个问题,我不得不添加以下属性:字符串
参见Apache Maven Resources Plugin / Specifying a character encoding scheme
8tntrjer7#
(As 2023年,但实际上一直如此)
如果你使用Sping Boot ,你什么都不需要做。
它已经应用于父类属性中
字符串
你不应该添加任何其他地方或插件,除非你知道你在做什么。
如果你看到建议做更多,很可能是过时的东西。