有没有办法在不使用外部JAVA_TOOL_OPTIONS的情况下使用UTF-8构建maven构建类文件?

时间:2012-04-28 23:41:40

标签: java maven maven-2 character-encoding

我不想依赖外部环境变量来强制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问题有所了解吗?

3 个答案:

答案 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