Как использовать maven в гетерогенной среде с разными кодировками? - PullRequest
3 голосов
/ 14 октября 2009

Я создал svn-репозиторий на linux-сервере (Debian) и использовал клиент на машине с Windows, чтобы проверить мои исходные коды Java.

Теперь я настроил сервер Hudson на другом сервере Linux (Ubuntu), чтобы периодически запускать тесты для моего кода. Но тесты заканчиваются ошибкой компилятора:

Error: unmappable character for encoding ASCII

На моей машине с Windows я использовал кодировку Cp1252 по умолчанию. На моем сервере SVN я могу сделать локальную проверку моих источников, и они выглядят хорошо. На моем сервере Hudson извлечение содержит недопустимые символы.

Какие параметры мне нужно настроить, чтобы все три системы использовали рабочую кодировку?

РЕДАКТИРОВАТЬ 2009-10-15:

Я изменил кодировку по умолчанию в моей системе Ubuntu на latin1. Теперь я могу открыть извлеченные файлы в редакторе, и они выглядят хорошо (спасибо @ John-T на superuser.com ).

Но Хадсон все еще жаловался на unmappable character for encoding ASCII, и я обнаружил, что это вызвано maven. Я нашел объяснение , но предложенное решение не сработало. Теперь maven говорит мне, что он использует latin1 при копировании некоторых ресурсов, но компилятор (не использующий этот параметр?) Все еще жалуется с тем же сообщением об ошибке.

Ответы [ 3 ]

18 голосов
/ 15 октября 2009

Нет, плагин компилятора maven не использует свойство project.build.sourceEncoding. Поэтому вам нужно настроить кодировку файла (я бы использовал UTF-8):

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <encoding>UTF-8</encoding>
  </configuration>
</plugin>
0 голосов
/ 14 октября 2009

Не думаю, что есть способ изменить кодировку файла с помощью SVN. Вы можете установить кодировку для сообщения фиксации с флагом --encoding, но не содержимое самих файлов. Текстовые файлы хранятся в том же формате, в котором они появляются на вашем локальном диске. Единственное преобразование - это перевод концов строк в соответствии со свойством svn: eol-style.

0 голосов
/ 14 октября 2009

Первое, что нужно определить, это какой персонаж вызывает проблему. Может случиться так, что сломанный символ может быть заменен каким-то чистым ASCII-объектом. Сам SVN кодирует независимость: он будет просто хранить побайтно, что было передано.

Если Хадсону требуется 7-битный ASCII, то это все, что вы можете сделать. В противном случае выясните, что поддерживает Hudson, и сохраните ваши файлы в этом формате. UTF-8, вероятно, будет подходящим вариантом.

...