lvgang 发表于 2013-1-28 12:42:01

maven 插件帮助信息乱码

maven 有相当多的插件,有些插件是官方提供的,如 http://maven.apache.org/plugins/index.html,还有一些是第三方提供的,如 http://mojo.codehaus.org/,当然你自己可能也会写一些插件。当碰到一个插件我们不知道如何使用的时候,最直接的就是到插件的官方网站查看相关的文档;但很多人忽视了还有另外的一种获取帮助的途径,即 maven help plugin。可以使用 maven help 插件的 describe goal 来获得一个插件的简单的描述及其包含哪些参数,如想知道如何使用 maven jar plugin 可以运行一下命令:

mvn help:describe -DgroupId=org.apache.maven.plugins -DartifactId=maven-jar-plugin

我们自己写了很多插件,当使用 maven help plugin 的 describe 查看帮助的时候输出全是乱码。这是为何?原本这些帮助都是中文编写的,怎么这会儿却乱码了呢?

在解释这个问题之前先简单说明一下 describe goal 的输出来自哪里。describe goal 是通过读取 maven plugin 的描述文件 plugin.xml(该文件位于 plugin jar 的 META-INF/maven/plugin.xml),而这个描述文件是由 maven plugin plugin 的 descriptor goal 在 build plugin 的时候自动生成的。它是根据 plugin mojo 中的 javadoc 来生成相应的描述信息的。

descriptor goal 在读取 java 源文件的时候,老版本(2.5之前)的 descriptor goal 会使用系统默认的文件编码方式(System.getProperty("file.encoding"))来读取而且也没有提供配置读取 java 源文件时使用的字符编码的方式。如果你的 java 源文件编码方式不同于操作系统默认的编码方式,那么中文字符自然就会出现乱码,如 windows 系统的默认编码方式是 gdk,而我们的 java 源代码使用的却是 utf-8 编码的时候就会出现乱码。maven plugin plugin 从版本 2.5 开始才提供了一个 encoding 参数来配置读取源代码使用的编码。但 maven plugin plugin 插件的版本在 super pom(MAVE_HOME\lib\maven-2.2.1-uber.jar!/org/apache/maven/project/pom-4.0.0.xml) 中已经指定为 2.4.3,所以默认情况下会出现字符乱码的情况。要解决这个问题只要在 pom 中添加如下配置即可:

<build>    <plugins>      <plugin>            <groupId>org.apache.maven.plugins</groupId>            <artifactId>maven-plugin-plugin</artifactId>            <version>2.6</version>      </plugin>    </plugins></build>

ps: 之前有一次因为乱码致使 maven 解析不了 plugin.xml 文件,这才促使我仔细了解了一下 plugin.xml 文件的来龙去脉。

--EOF--
页: [1]
查看完整版本: maven 插件帮助信息乱码