Передача дополнительного файла во время релиза Maven: что, если нам сначала нужно добавить его в систему контроля версий?

Есть ли известный способ зафиксировать изменения в дополнительном файле во время выпуска Maven, а также добавить этот файл в систему контроля версий, если это необходимо?

У нас есть файл ресурсов, который потенциально может быть изменен в процессе сборки, и мы хотим зафиксировать любые изменения в этом файле во время выпуска Maven, чтобы наиболее точная версия была отражена в наших тегах.

Мы можем получить большую часть пути, настроив maven-scm-plugin для проверки изменений в нашем файле, и добавив scm:checkin к preparationGoals из maven-release-plugin, вот так:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-scm-plugin</artifactId>
    <version>1.9.5</version>
    <configuration>
      <includes>resource.file</includes>
      <message>[maven-scm-plugin] Committing resource.file from latest release</message>
    </configuration>
  </plugin>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.5.3</version>
    <configuration>
      <preparationGoals>clean verify scm:checkin</preparationGoals>
    </configuration>
  </plugin>

Этот подход прекрасно обрабатывает новые изменения в существующем файле ресурсов. К сожалению, происходит сбой, когда наша сборка создает новый файл ресурсов, который еще не добавлен в систему управления версиями:

[INFO] [ERROR] Provider message:
[INFO] [ERROR] The svn command failed.
[INFO] [ERROR] Command output:
[INFO] [ERROR] svn: E200009: Commit failed (details follow):
[INFO] svn: E200009: '/acme/builder/workspace/_experiment-commit-on-release/resource.file' is not under version control

Хотя мы можем обойти это дело, добавив scm:add в preparationGoalsэтот подход потерпит неудачу, когда наш файл ресурсов будет добавлен в систему управления версиями:

[INFO] [ERROR] Provider message:
[INFO] [ERROR] The svn command failed.
[INFO] [ERROR] Command output:
[INFO] [ERROR] svn: warning: W150002: '/acme/builder/workspace/_experiment-commit-on-release/resource.file' is already under version control
[INFO] svn: E200009: Could not add all targets because some targets are already versioned
[INFO] svn: E200009: Illegal target for the requested operation

Я уверен, что Maven может вызвать какой-то внешний сценарий для решения этой проблемы для нас, но я бы предпочел сохранить эту логику в самом Maven, если это вообще возможно.

0 ответов

Другие вопросы по тегам