Зафиксируйте несколько файлов с помощью плагина maven scm

Я хочу git зафиксировать два файла в разных папках с помощью плагина maven scm (v1.9.4). Например: abc/p.json и xyz\p.json. Я не хочу коммитить какие-либо другие файлы, такие как other/p.json

Согласно документации для цели chekin должен работать список, разделенный запятыми, например abc/p.json,xyz/p.json. Но в конечном итоге он фиксирует все файлы.

Я использую цель scm:checkin с конфигурацией <preparationGoals> плагина выпуска maven.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-release-plugin</artifactId>
    <version>${maven.release.plugin.version}</version>
    <configuration>
        <preparationGoals>
            clean verify
            scm:checkin -DpushChanges=false -Dmessage="[maven-release-plugin] Update version text"
            -Dincludes="abc/p.json,xyz/p.json"
    </configuration>
</plugin>

Как зафиксировать только файлы abc/p.json и xyz/p.json?


person Aruna Herath    schedule 23.02.2018    source источник
comment
Проголосуйте за запрос этой функции   -  person Vivek    schedule 18.04.2021


Ответы (1)


Мне удалось получить список зарегистрированных файлов, создав профиль, похожий на:

<profile>
  <id>commit-changed-files</id>
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-scm-plugin</artifactId>
          <configuration>
            <includes>file1,file2,file3,file4</includes>
            <message>[maven-release-plugin] commit changed files</message>
            <pushChanges>false</pushChanges><!-- because I use git -->
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</profile>

И затем, в конфигурации плагина релиза:

        <preparationGoals>-Pcommit-changed-files clean scm:add scm:checkin</preparationGoals>
        <completionGoals>-Pcommit-changed-files clean scm:add scm:checkin</completionGoals>

Ссылка: файл pom.xml formatter-m2e-configurator

person Christopher    schedule 06.03.2018
comment
Спасибо! Есть ли способ заказать цели подготовки? Файлы, которые я хочу зафиксировать, обновляются в жизненном цикле verify. Но с этой конфигурацией scm:checkin запускается раньше verify :( - person Aruna Herath; 07.03.2018
comment
мой конфиг: <preparationGoals>clean verify scm:add scm:checkin -Pcommit-version-updated-files</preparationGoals> - person Aruna Herath; 07.03.2018
comment
Мне кажется неправильным изменять файлы на этапе verify, и я бы посмотрел там, чтобы решить проблему. Все, что модифицируется, должно быть сделано до этапа package. Тем не менее ... вы, вероятно, могли бы поместить само выполнение в профиль и выбрать фазу, на которой вы хотите, чтобы оно выполнялось, а не запускать цель из командной строки в <preparationGoals />. Однако после verify не так много фаз, и привязка к самой verify может не гарантировать, что она будет работать после другого подключаемого модуля, привязанного к verify. - person Christopher; 07.03.2018
comment
Ах. Извините, я был неправ. на самом деле в фазе validate мы обновляем текст версии. Не verify. Но scm:checkin цель запускается еще раньше. Если выполнение привязано к профилю, я буду использовать фазу post-validate. Тогда еще профиль надо активировать в preparationGoals и completionGoals правильно? Большое спасибо за твою помощь :) - person Aruna Herath; 07.03.2018
comment
В жизненном цикле сборки нет фазы post-validate (maven.apache. org/guides/introduction/). Но привязка к initialize должна работать... просто убедитесь, что вы привязываете и scm:add, и scm:checkin к этой фазе, и что у вас сначала выполняется scm:add (вы можете привязать scm:checkin к generate-sources, если действительно хотите быть уверенным). Когда вы активируете, это зависит от того, когда происходят изменения. В моем случае плагин изменил файлы на этапе clean как для release:prepare, так и для release:perform, поэтому я сделал и то, и другое. Ваша ситуация может отличаться. - person Christopher; 09.03.2018