如何在Maven中configuration编码?

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

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

所以,我google了一下,但我能find的是,我必须补充:

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

…到我的pom.xml。 但它已经在那里(在父pom.xml )。

为maven-resources-plugin或maven-compiler-pluginconfiguration<encoding>也不能解决它。

所以有什么问题?

好的,我发现了这个问题。

我使用一些报告插件。 在这个文档中,我发现, <encoding>configuration – 当然是一个安全的maven插件( http://maven.apache.org/plugins/maven-failsafe-plugin/integration-test-mojo.html )默认使用${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

如果有人遇到上述解决scheme无法解决的scandic字母问题,那么这将是以前的补充。

如果Java源文件包含scandic字母,则需要通过用于编译Java正确解释。 (例如常量中使用的scandic字母)

即使这些文件是以UTF-8格式存储的,而且Maven被configuration为使用UTF-8,Maven使用的系统Java仍然会使用系统默认的(例如Windows:cp1252)。

这只能通过maven运行testing(可能在testing中打印这些常量的值),打印出来的scandic字母会显示为'<?>')如果testing不当,这会破坏类文件作为编译结果,不被人注意。

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

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

如果结合上面的答案,最后一个为UTF-8configuration的pom.xml看起来应该是这样的。

的pom.xml

 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>YOUR_COMPANY</groupId> <artifactId>YOUR_APP</artifactId> <version>1.0.0-SNAPSHOT</version> <properties> <project.java.version>1.8</project.java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> <dependencies> <!-- Your dependencies --> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>${project.java.version}</source> <target>${project.java.version}</target> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> <configuration> <encoding>${project.build.sourceEncoding}</encoding> </configuration> </plugin> </plugins> </build> </project> 

尝试这个:

 <project> ... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.7</version> <configuration> ... <encoding>UTF-8</encoding> ... </configuration> </plugin> </plugins> ... </build> ... </project>