Подтвердить что ты не робот

Как отключить плагин релиза maven проверить локальные изменения?

Я использую плагин релиза maven. В моем pom существует и Ant задача, которая автоматически исправляет некоторые файлы свойств с дополнительной информацией. Эти исправления не должны быть в SCM. Но maven не успевает за ошибкой:

Cannot prepare the release because you have local modifications 

Можно ли установить некоторые параметры, чтобы не проверять локальные модификации?

Спасибо.

4b9b3361

Ответ 1

Я не очень хорошо знаком с maven-release-плагином, но я вижу, что есть свойство checkModificationExcludes, которое вы можете использовать для своей цели. Конфигурация должна быть примерно такой:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-release-plugin</artifactId>
  <version>2.2.2</version>
  <configuration>
    ...
    <checkModificationExcludes>
      <checkModificationExclude>file_1</checkModificationExclude>
      <checkModificationExclude>dir_1/file_2</checkModificationExclude>
    </checkModificationExcludes>
  </configuration>
</plugin>

Ответ 2

Мы пытались запустить выпуск от jenkins, но он всегда терпел неудачу с тем же сообщением...

Cannot prepare the release because you have local modifications 

... что было странно, потому что мы используем jenkins для проверки и создания последних источников до выпуска.

Наконец, мы выяснили, что проблема в том, что мы строили на Windows node, а некоторые пути к файлам были слишком длинными, из-за чего плагин maven-release-плагин жаловался на локальные модификации. Переключение на Linux node решило эту проблему.

Ответ 3

Удаление моей папки проекта target из источника управления исправило эту проблему для меня.

Ответ 4

Я бы предложил исправить ваш процесс сборки, чтобы он не "исправлял" файлы, находящиеся под SCM. Существует несколько способов сделать это, проще всего скопировать файлы свойств в какой-то каталог под ${project.build.outputDirectory} и запустить Ant script в этих файлах, а не оригиналы

Ответ 5

@AndrewLogvinov ответ на полпути. Вторая половина упоминается в этом:

Я обнаружил, что сравнение в org.apache.maven.shared.release.phase.ScmCheckModificationsPhase.execute() удаляет путь и сравнивает только имена файлов. Итак, я изменил свой pom, чтобы игнорировать application.properties вместо свойств ${thewholepath}/applications. И вот, успех.

По какой-то странной причине вы не можете включать пути в этот тег. Вы можете указывать только имена файлов.

Ответ 6

В моем случае это работало на Windows, переименовывая имя задания в более короткую длину (около 20 символов).

В моем случае имя работы Дженкинса, а также имя ветки SVN были длиннее (около 40 символов). Если некоторые пути к файлам слишком длинные, это заставляет плагин maven-release-plugin пожаловаться на локальные изменения. Дженкин создает локальное рабочее пространство с именем работы

например Для и как ниже, работа Дженкинс при выпуске начнет жаловаться на локальные изменения.

D:\dev.env\data\jenkins\jobs\<LongerJobName>\workspace\<LongerBranchName>\testCommonJar\src\main\java\com.example.webservice.service.TestServiceImpl.java