Я начинаю процесс выпуска через jenkins, вызывая maven с
-Dresume=false clean release:prepare release:perform
Поскольку я хочу изменить исходный код (добавить каталоги и файлы и передать их git) до завершения процесса подготовки, я хочу запустить профиль "doAtPrepare" только на этапе выпуска: подготовить. Профиль уже работает в нужном месте, но, к сожалению, называется дважды. Однажды в релизе: подготовьте и один раз в релизе: выполните этап. Последнее приводит к ошибке при фиксации "отдельной головы" в git.
Для запуска профилей в релизе: выполните только этап, в котором работает опция конфигурации "releaseProfiles" в maven-release -P lugin. Но мне это нужно наоборот, и до сих пор мы не нашли решения.
Я попытался с profile.activation.properties(profile =! DoAtPrepare), попытался установить переменные (-D) и проверить их с помощью profile.activation.properties, попытался проверить существующие файлы в файле profile.activation.file (который не является потому что имена файлов содержат параметры $ {version}), попытались использовать -P в командной строке jenkins (которая запускает профиль на обоих этапах) и многое другое.
Кто-нибудь, кто может помочь мне найти рабочее решение?
Я нашел обходное решение, но не настоящее решение. Лучшие предложения по-прежнему приветствуются.
Сначала добавьте профиль, который выполняет желаемую работу:
<profile>
<id>createNextDir</id>
<build>
<plugins>
<plugin>
<!-- whatever you want -->
</plugin>
</plugins>
</build>
</profile>
затем добавьте задание в профиль, который создает фиктивный файл с фиксированным именем файла в вашем целевом каталоге:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>createNextDir1</id>
<phase>generate-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<propertyfile file="target/done.lock" comment="Version ${project.version}">
</propertyfile>
</target>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>20020829</version>
</dependency>
</dependencies>
</plugin>
Последний шаг - активировать профиль только тогда, когда файл не существует. Обратите внимание, что во время выпуска: выполнить базовый каталог - target/checkout/yourproject, поэтому нужно указать правильный файл.. /../../yourproject/target/done.lock
<profile>
<id>createNextDir</id>
<activation>
<file>
<missing>../../../yourproject/target/done.lock</missing>
</file>
</activation>
<!-- Rest of profile -->
</profile>