Могу ли я включить mvn deploy: deploy-file в pom или настройки.xml вместо цели cli

Мне нужно развернуть пользовательский jar в Artifactory вместе с jar, сгенерированным из моего проекта Java. В настоящее время единственный метод, который я могу найти, - это цель командной строки с помощью:

mvn deploy:deploy-file -DgroupId=<group-id> 
  -DartifactId=<artifact-id> 
  -Dversion=<version> 
  -Dpackaging=<type-of-packaging> 
  -Dfile=<path-to-file> 
  -Durl=<url-of-the-repository-to-deploy>

есть ли способ включить это в файл POM? Как плагин или что-то?

4 ответов


конечно. Просто определите выполнение maven-deploy-plugin:deploy-file цель привязана к deploy фаза, настроенная с вашими значениями. При развертывании проекта это выполнение будет вызвано, и JAR будет развернут.

<plugin>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>2.8.2</version>
    <executions>
        <execution>
            <id>deploy-file</id>
            <phase>deploy</phase>
            <goals>
                <goal>deploy-file</goal>
            </goals>
            <configuration>
                <file><!-- path-to-file --></file>
                <url><!-- url-of-the-repository-to-deploy --></url>
                <groupId><!-- group-id --></groupId>
                <artifactId><!-- artifact-id --></artifactId>
                <version><!-- version --></version>
                <packaging><!-- type-of-packaging --></packaging>
            </configuration>
        </execution>
    </executions>
</plugin>

обратите внимание, что вам, вероятно, нужно будет добавить repositoryId также. Это идентификатор сервера для сопоставления на <id> под на settings.xml.


вы можете загрузить пользовательские настройки maven.в XML в TeamCity, где вы должны указать distributionManagement и сервер, как указано на странице документации. После этого, если вы измените шаг сборки maven для использования загруженных параметров, развертывание будет выполнено путем простого добавления deploy gial к набору выполненных целей на этом шаге.


на работа с Maven раздел в руководстве Artifactory подробно охватывает эту тему, в частности часть о развертывание артефактов.
Кроме того, вы можете посмотреть скринкаст о установка Artifactory в качестве репозитория Maven.

для развертывания артефактов сборки через Artifactory необходимо добавить distributionManagement элемент в файле POM проекта с URL-адресом целевого локального репозитория, к которому вы требуется развернуть артефакты. Кроме того, вам нужно будет настроить учетные данные сервера Artifactory в настройках.XML-файл.
Artifactory может помочь в создании фрагмента distributionManagement и параметров.xml (см. больше информации в ссылках, которые я предоставил выше).


Я лично не думаю, что объявление его в POM является хорошим подходом. Например, если у вас есть многомодульный проект Maven, состоящий из дочерних POMs, наследуемых от родительского POM / super POM, и пользовательский jar для загрузки содержится только в 1 дочернем модуле, то вам придется явно объявить конфигурацию в Родительском POM (так как mvn deploy обычно используется для выполнения superpom) и объявляет каждый другой дочерний POM, чтобы пропустить выполнение конфигурации, которая загромождает Структура пом.

лучшим подходом было бы написать сценарий и связать его с вашими конфигурациями запуска deploy цель с deploy:deploy-file цель-в конце жизненного цикла сборки.