Запуск профиля maven при выпуске: только подготовка

1

Я начинаю процесс выпуска через 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 (которая запускает профиль на обоих этапах) и многое другое.

Кто-нибудь, кто может помочь мне найти рабочее решение?

Теги:
maven
jenkins

1 ответ

0

Я нашел обходное решение, но не настоящее решение. Лучшие предложения по-прежнему приветствуются.

Сначала добавьте профиль, который выполняет желаемую работу:

    <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>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню