Мы используем подключаемый модуль 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
, но он не перезапишет существующее свойство.
Любые идеи приветствуются.
Это должно быть автоматическим, чтобы наша система CI могла развертываться
Что ж, решение было некрасивым, но, как мы говорим на Среднем Западе, оно работает:
<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>
Я надеюсь, что это поможет кому-то или когда-нибудь кто-то опубликует лучший способ.
Используйте свойство системной среды или параметр командной строки во время сборки.