Развертывание снимков и выпусков через командную строку Maven

Я хочу развернуть проекты внутри моего конвейера CI/CD, не используя блок распределения внутри моего pom, который будет выглядеть так:

<distributionManagement>
    <repository>
        <id>central</id>
        <name>x-releases</name>
        <url>http://serverhostname/artifactory/libs-release-local</url>
    </repository>
    <snapshotRepository>
        <id>snapshots</id>
        <name>x-snapshots</name>
        <url>serverhostname/artifactory/libs-snapshot-local</url>
    </snapshotRepository>
</distributionManagement>

Я попытался указать репозитории через командную строку:

-DaltSnapshotDeploymentRepository=myserver::default::serverhostname/artifactory/libs-snapshot-local \
-DaltReleaseDeploymentRepository=myserver::default::serverhostname/artifactory/artifactory/libs-release-loca

Но это не удается с

Deployment failed: repository element was not specified in the POM inside distributionManagement element or in -DaltDeploymentRepository=id::layout::url parameter

Указание -DaltDeploymentRepository позволяет мне развернуть артефакт в репозиторий, но я больше не уверен, как различать SNAPSHOT и RELEASE. Я думал, что maven сможет сделать это как-то автоматически.

Какие параметры командной строки использовать для замены этого блока распределения?


person Michael G.    schedule 26.09.2018    source источник
comment
Почему вам не нравится использовать DistributionManagement?   -  person khmarbaise    schedule 26.09.2018
comment
Моей первой мыслью было: я хотел бы сохранить детали развертывания проекта отдельно от самого проекта. Я думал, что это часть конвейера CI, а не часть проекта. Но я знаю, что это своего рода идеалистический подход. Вторая причина в том, что проект автоматически сгенерирован с использованием openapi-codegen. Он генерирует целый проект, включая файл pom. Но без блока управления распределением. Мне пришлось бы написать сценарий, когда он будет исправлен в конвейере CI, что довольно уродливо. :(   -  person Michael G.    schedule 26.09.2018
comment
Используют ли эти сгенерированные помпы родителя?   -  person khmarbaise    schedule 26.09.2018
comment
Нет, openapi-codegent не генерирует pom, ссылающийся на родителя.   -  person Michael G.    schedule 01.10.2018


Ответы (1)


Проверьте версию плагина maven-deploy-plugin.

Я использовал версию 2.7 и получил ту же ошибку, но обновился до 2.8.2, и сборка завершилась успешно.

Вот зависимость:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>2.8.2</version>
</plugin>
person Nyein Chan Wynn    schedule 20.10.2018
comment
Почему вы использовали maven-deploy-plugin без какой-либо настройки? - person Alessandro C; 01.05.2020