Maven插件确保UTF-8编码?

kqhtkvqz  于 9个月前  发布在  Maven
关注(0)|答案(3)|浏览(175)

如果构建器注意到一个不是用UTF-8编码的文件,我可以使用Maven插件来使构建失败吗?

chhqkbe1

chhqkbe11#

是的,有https://github.com/mikedon/encoding-enforcer
它使用Maven Enforcer Pluginjuniversalchardet来进行编码检测。

**更新2016-10-20:**org.codehaus.mojo有一个extra-enforcer-rules插件,它引入了一个requireEncoding规则。它使用ICU4J进行编码检测。

用法是:

<plugin>
  <artifactId>maven-enforcer-plugin</artifactId>
  <!-- find the latest version at http://maven.apache.org/plugins/maven-enforcer-plugin/ -->
  <version>1.0</version> 
  <executions>
    <execution>
      <id>require-utf-8</id>
      <goals>
        <goal>enforce</goal>
      </goals>
      <configuration>
        <rules>
          <requireEncoding>
            <encoding>UTF-8</encoding>
            <includes>src/main/resources/**,src/test/resources/**</includes>
          </requireEncoding>
        </rules>
        <fastFail>false</fastFail>
      </configuration>
    </execution>
  </executions>
  <dependencies>
    <dependency>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>extra-enforcer-rules</artifactId>
      <!-- find the latest version at http://www.mojohaus.org/extra-enforcer-rules/ -->
      <version>1.0-beta-6</version>
    </dependency>
  </dependencies>
</plugin>
yqkkidmi

yqkkidmi2#

采用Maven的好选择-毫无疑问,你很快就会完全转换!:)
你可能想看看Maven enforcer plugin。首先,您可以使用requireProperty规则来确保project.build.sourceEncoding属性设置为UTF-8。
至于检查实际文件本身(即,检查是否有人提交了一个非unicode文件),你可以implement your own custom rule的强制插件.当执行此规则时,您需要读取项目中的所有资源,并找到一些方法来检测每个资源的编码(例如,iconv)。

kqlmhetl

kqlmhetl3#

maven-enforcer-plugin对我们来说很好。
我们需要对没有任何UTF-8特定字符或BOM的文件使用acceptAsciiSubset,否则它会抱怨US-ASCII编码。
此外,failFast标记需要在requireEncoding中列出所有失败的文件:

<plugin>
            <artifactId>maven-enforcer-plugin</artifactId>
            <version>3.4.1</version>
            <executions>
                <execution>
                    <id>require-utf-8</id>
                    <goals>
                        <goal>enforce</goal>
                    </goals>
                    <configuration>
                        <rules>
                            <requireEncoding>
                                <encoding>UTF-8</encoding>
                                <acceptAsciiSubset>true</acceptAsciiSubset>
                                <failFast>false</failFast>
                            </requireEncoding>
                        </rules>
                    </configuration>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>extra-enforcer-rules</artifactId>
                    <version>1.7.0</version>
                </dependency>
            </dependencies>
        </plugin>

相关问题