Плагин Maven для обеспечения кодировки UTF-8? - PullRequest
6 голосов
/ 25 февраля 2011

Существует ли плагин Maven, который можно использовать для сбоя сборки, если сборщик замечает файл, не закодированный с помощью UTF-8?

Ответы [ 2 ]

5 голосов
/ 15 июля 2014

Да, есть https://github.com/mikedon/encoding-enforcer

Для определения кодировки используются Maven Enforcer Plugin и juniversalchardet .

ОБНОВЛЕНИЕ 2016-10-20: org.codehaus.mojo имеет плагин extra -forcer-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>
4 голосов
/ 03 марта 2011

Хороший выбор при принятии Maven - без сомнения, вы скоро будете полностью новообращенным! :)

Возможно, вы захотите взглянуть на плагин Maven Enforcer . Для начала вы можете использовать правило requireProperty, чтобы убедиться, что для свойства project.build.sourceEncoding установлено значение UTF-8.

Что касается проверки самих файлов (т. Е. Проверки того, что кто-то зафиксировал файл, не поддерживающий Юникод), вы можете реализовать собственное пользовательское правило для плагина принудительного применения. Когда это правило будет выполнено, вам нужно будет прочитать все ресурсы в проекте и найти какой-нибудь метод определения кодировки для каждого (например, iconv).

...