如果构建器注意到未使用UTF-8编码的文件,是否有可用于构建失败的Maven插件?
答案 0 :(得分:5)
是的,有https://github.com/mikedon/encoding-enforcer
它使用Maven Enforcer Plugin和juniversalchardet进行编码检测。
更新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>
答案 1 :(得分:4)
采用Maven的好选择 - 毫无疑问,你很快就会完全转换! :)
您可能需要查看Maven enforcer plugin。首先,您可以使用requireProperty
规则来确保project.build.sourceEncoding
属性设置为UTF-8。
至于检查实际文件本身(即检查是否有人提交了非unicode文件),您可以implement your own custom rule获取执行器插件。执行此规则时,您需要阅读项目中的所有资源,并找到一些检测每个资源编码的方法(例如iconv)。