Maven выпускает плагин и разрывы строк Windows - программирование
Подтвердить что ты не робот

Maven выпускает плагин и разрывы строк Windows

когда я пытаюсь запустить maven-release-плагин, он изменяет версию в файле pom.xml. До выхода maven каждая строка заканчивается стилем unix <lf>, но после запуска на моем компьютере Windows плагин изменяет каждую строку в файле на <cr><lf>.

Мои вопросы:

a) Есть ли способ сказать maven оставить все как есть или использовать конкретную строку, заканчивающуюся

или

b) Есть ли общий способ сообщить окнам, что должно заканчиваться строка? Даже инструмент, который взламывает что-то глубоко в ОС, будет считаться полезным.

Я посмотрел на этот https://issues.jfrog.org/jira/browse/BI-111, и он говорит "разрешен", но я использую последнюю версию, и это не работайте для меня.

4b9b3361

Ответ 1

Существует четыре возможных решения.

  • Используйте плагин Maven Assemly

Думаю, лучшая идея - раскрыть плагин сборки Maven. Он должен позволить вам обновить разделитель строк. Подробнее см. В разделе "fileSet".

  1. Используйте PowerShell для вызова mvn

Как временная работа, вы можете использовать PowerShell (Пуск- > Все программы- > Аксессуары- > Windows PowerShell). Вызовите maven, как и вы, с некоторыми дополнительными возможностями, которые дублируют предложения -D. mvn assembly:assembly -P prod "-Dmaven.test.skip=true". Теперь добавьте к этому -Dline.separator = `n. Это должно привести к тому, что PowerShell добавит экранированное значение.

  1. Создайте собственный плагин для переопределения "line.separator" до обновления pom.

Следуйте Maven Guide по созданию простого плагина. Все, что нужно сделать, это переопределить значение. Настройте плагин для выполнения в фазе до модификации pom.

System.getProperties().setProperty("line.separator", "\n");
  1. Создание виртуальной машины Linux.

Существует опция, которая не исправляет проблему совместимости Windows, но должна решить вашу основную проблему. Посмотрите на создание небольшого сервера VirtualBox Linux. Для доступа в Интернет достаточно простого NAT-соединения. Установите Maven, Java и т.д. На этом компьютере. Постройте на нем. Поскольку он Linux, разделитель строк должен быть только "\n". VM понадобится 256 - 512 МБ оперативной памяти и 20 ГБ пространства для хранения (Linux + множество возможных зависимостей Maven). Если вы в конце концов полюбите его, вы можете даже расширить его, чтобы разместить продукт непрерывной интеграции, такой как Jenkins.

Ответ 2

Моим обходным путем является использование свойства SVN: svn:eol-style=native. Таким образом, SVN "конвертирует" pom.xml, когда он обновляется или фиксируется.

Ответ 3

Работа в Linux, но требующая окончания строки Windows, например. set-versions, это быстрое исправление работает для меня:

mvn -Dline.separator=$'\r\n' \
    -DautoVersionSubmodules=true \
    -DdevelopmentVersion=1.2.3-SNAPSHOT \
    release:update-versions