我不想依赖外部环境变量来强制maven使用UTF-8构建我的类。在Mac上,我在使用maven构建时遇到了各种各样的问题。只有下面的选项才能解决问题:
export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
mvn clean install
但是,我正在分发我的项目,依靠用户设置此环境变量来正确构建项目是没有意义的。
按照此处所述尝试了所有内容:enabling UTF-8 encoding for clojure source files
任何人都对这个令人敬畏的Maven问题有所了解吗?
答案 0 :(得分:32)
@Joop Eggen在这里给出了正确答案:https://stackoverflow.com/a/10367745/962872
仅定义该属性是不够的。你必须将它传递到适当的插件中。它不会在那里通过魔法。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>...</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>...</version>
<configuration>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
...
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
答案 1 :(得分:1)
是的,定义
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
答案 2 :(得分:1)
我遇到了这个问题,但只有在从Emacs运行编译时才会遇到。我无法改变项目的poms。对我有用的是将以下内容放在〜/ .mavenrc
中LANG=en_US.UTF-8