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

chr*_*tek 9 java maven-2 character-encoding maven

我不想依赖外部环境变量来强制maven使用UTF-8构建我的类.在Mac上,我在使用maven构建时遇到了各种各样的问题.只有下面的选项才能解决问题:

export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8
mvn clean install
Run Code Online (Sandbox Code Playgroud)

但是,我正在分发我的项目,依靠用户设置此环境变量来正确构建项目是没有意义的.

尝试了这里描述的所有内容:为clojure源文件启用UTF-8编码

任何人都对这个令人敬畏的Maven问题有所了解?

chr*_*tek 33

@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>
Run Code Online (Sandbox Code Playgroud)

  • 答案是正确的,但仅供参考:根据Maven的官方文档,只添加`&lt;project.build.sourceEncoding&gt;`标签应该可以。引用:_对于插件**遵循我们的源文件编码指南**,这就像将以下属性添加到您的 POM(或其父 POM 之一)一样简单:..._ 来源:http://maven。 apache.org/general.html#encoding-warning (2认同)