Maven: нужен способ изменить значение свойства или URL-адреса, если проект выпускается или нет

Мы используем подключаемый модуль JDeb maven для сборки пакетов debian для наших проектов с одной банкой.

У нас есть два репозитория APT, один для предварительных сборок, а другой для выпусков.

Мы используем подключаемый модуль Wagon для загрузки артефактов, но не можем понять, как отправлять релизы только в репозиторий релизов, а снимки — в репозиторий предварительных релизов.

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>wagon-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>upload-to-nexus</id>
            <phase>deploy</phase>
            <goals>
                <goal>upload-single</goal>
            </goals>
            <configuration>
                <serverId>xxx-all</serverId>
                <fromFile>${project.build.directory}/${jdeb.name}</fromFile>
                <url>https://xxx.xxx.xxx/repository/xxx-apt-pre</url>
            </configuration>
        </execution>
    </executions>
</plugin>

Нам нужно изменить xxx-apt-pre выше на xxx-apt-dist, когда запустится плагин выпуска. Для жизни меня, я не могу найти способ сделать это.

Сначала я попытался использовать плагин build-helper для регулярного выражения ${project.build.finalName} для фразы SNAPSHOT, но он не перезапишет существующее свойство.

Любые идеи приветствуются.

Используйте свойство системной среды или параметр командной строки во время сборки.

Guillaume F. 29.05.2019 18:59

Это должно быть автоматическим, чтобы наша система CI могла развертываться

Jonathan S. Fisher 29.05.2019 20:42
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что ж, решение было некрасивым, но, как мы говорим на Среднем Западе, оно работает:

<plugin>
    <groupId>org.codehaus.gmaven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <executions>
        <execution>
            <id>add-dynamic-properties</id>
            <phase>package</phase>
            <goals>
                <goal>execute</goal>
            </goals>
            <configuration>
                <source>
                <![CDATA[
                    if (project.version.contains('SNAPSHOT')) {
                        project.properties['aptRepoName'] = 'xxx-apt-pre'
                    } else {
                        project.properties['aptRepoName'] = 'xxx-apt-dist'
                    }
                ]]>
                </source>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>wagon-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>upload-to-nexus</id>
            <phase>deploy</phase>
            <goals>
                <goal>upload-single</goal>
            </goals>
            <configuration>
                <serverId>xxx-all</serverId>
                <fromFile>${project.build.directory}/${jdeb.name}</fromFile>
                <url>https://xxx.xxx.xxx/repository/${aptRepoName}</url>
            </configuration>
        </execution>
    </executions>
</plugin>

Я надеюсь, что это поможет кому-то или когда-нибудь кто-то опубликует лучший способ.

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