当我在我的多模块maven项目上运行maven安装时,我总是得到以下输出:
[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>也不能修复它。
那么问题是什么呢?
好的,我找到问题了。
我使用一些报告插件。在failsafe-maven-plugin的文档中,我发现<encoding>配置当然使用${project.reporting。默认为outputEncoding}。
所以我添加了属性作为项目元素的子元素,现在一切都好了:
<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
这将是除了前面,如果有人遇到了一个问题与可疑的字母,不能解决上述解决方案。
如果java源文件包含扫描字母,它们需要被用于编译的java正确解释。(例如常量中使用的不规则字母)
即使文件存储在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运行单个测试)。