Как заставить плагин Maven Deploy загружать только определенный файл?

Я хочу добавить два почтовых индекса в уже опубликованная версия в Nexus.
По сути, это заархивированная демонстрация приложения и расширенная версия того же приложения, также заархивированная.

Используя плагин Deploy, я определил два выполнения в своем pom, по одному для каждого файла, и привязал их к фазе развертывания. Вот тот, что для демо:

<execution>
   <id>deploy-essential</id>
      <phase>deploy</phase>
      <goals>
         <goal>deploy-file</goal>
      </goals>
      <configuration>
         <file>${project.build.directory}/${project.artifactId}-${project.version}-demo.zip</file>
         <groupId>${project.groupId}</groupId>
         <artifactId>myproject</artifactId>
         <version>${project.version}</version>
         <classifier>demo</classifier>
         <repositoryId>nexus</repositoryId>
         <url>${targetrepository}</url>
         <generatePom>false</generatePom>
      </configuration>
   </execution>

Я ожидал, что Maven загрузит файл и обновит метаданные до заданных координат G/A/V, когда произойдет это выполнение. Однако вместо этого он загружает данный файл и родственный файл, содержащий полную версию, в заданные координаты, а затем снова загружает их оба в исходные координаты.

Затем он продолжает делать все это снова для второго выполнения. Вот выдержка из моего журнала:

[INFO] --- maven-deploy-plugin:2.7:deploy-file (deploy-demo) @ bundle ---
Downloading: http://nexus/repositories/snapshots/mygroup/myproject/1.2.6-SNAPSHOT/maven-metadata.xml
2 KB   

Downloaded: http://nexus/repositories/snapshots/mygroup/myproject/1.2.6-SNAPSHOT/maven-metadata.xml (2 KB at 4.8 KB/sec)
Uploading: http://nexus/repositories/snapshots/mygroup/myproject/1.2.6-SNAPSHOT/myproject-1.2.6-20121130.102624-5-demo.zip
...           
Uploaded: http://nexus/repositories/snapshots/mygroup/myproject/1.2.6-SNAPSHOT/myproject-1.2.6-20121130.102624-5-demo.zip (13032 KB at 23105.2 KB/sec)
Downloading: http://nexus/repositories/snapshots/mygroup/myproject/maven-metadata.xml
533 B      

Downloaded: http://nexus/repositories/snapshots/mygroup/myproject/maven-metadata.xml (533 B at 34.7 KB/sec)
Uploading: http://nexus/repositories/snapshots/mygroup/myproject/1.2.6-SNAPSHOT/maven-metadata.xml
2 KB    

Uploaded: http://nexus/repositories/snapshots/mygroup/myproject/1.2.6-SNAPSHOT/maven-metadata.xml (2 KB at 89.4 KB/sec)
Uploading: http://nexus/repositories/snapshots/mygroup/myproject/maven-metadata.xml
533 B   

Uploaded: http://nexus/repositories/snapshots/mygroup/myproject/maven-metadata.xml (533 B at 32.5 KB/sec)
Downloading: http://nexus/repositories/snapshots/mygroup/bundle/1.2.6-SNAPSHOT/maven-metadata.xml
861 B   

Downloaded: http://nexus/repositories/snapshots/mygroup/bundle/1.2.6-SNAPSHOT/maven-metadata.xml (861 B at 3.8 KB/sec)
Uploading: http://nexus/repositories/snapshots/mygroup/bundle/1.2.6-SNAPSHOT/bundle-1.2.6-20121130.102625-3-full.zip
...           
Uploaded: http://nexus/repositories/snapshots/mygroup/bundle/1.2.6-SNAPSHOT/bundle-1.2.6-20121130.102625-3-full.zip (13065 KB at 18531.7 KB/sec)
Downloading: http://nexus/repositories/snapshots/mygroup/bundle/maven-metadata.xml
410 B      

Downloaded: http://nexus/repositories/snapshots/mygroup/bundle/maven-metadata.xml (410 B at 8.5 KB/sec)
Uploading: http://nexus/repositories/snapshots/mygroup/bundle/1.2.6-SNAPSHOT/maven-metadata.xml
861 B   

Uploaded: http://nexus/repositories/snapshots/mygroup/bundle/1.2.6-SNAPSHOT/maven-metadata.xml (861 B at 27.1 KB/sec)
Uploading: http://nexus/repositories/snapshots/mygroup/bundle/maven-metadata.xml
410 B   

Uploaded: http://nexus/repositories/snapshots/mygroup/bundle/maven-metadata.xml (410 B at 5.1 KB/sec)
Uploading: http://nexus/repositories/snapshots/mygroup/bundle/1.2.6-SNAPSHOT/bundle-1.2.6-20121130.102625-3-demo.zip
...           
Uploaded: http://nexus/repositories/snapshots/mygroup/bundle/1.2.6-SNAPSHOT/bundle-1.2.6-20121130.102625-3-demo.zip (13032 KB at 13631.1 KB/sec)
Uploading: http://nexus/repositories/snapshots/mygroup/bundle/1.2.6-SNAPSHOT/maven-metadata.xml
861 B      

Uploaded: http://nexus/repositories/snapshots/mygroup/bundle/1.2.6-SNAPSHOT/maven-metadata.xml (861 B at 56.1 KB/sec)

Это не имеет большого значения для SNAPSHOT, но полностью блокирует выпуски, поскольку Nexus настроен на отказ от повторного развертывания.

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


person Urs Reupke    schedule 30.11.2012    source источник


Ответы (3)


Поскольку вы не отключили механизм развертывания по умолчанию, он все еще выполняется. Вам нужно что-то вроде этого:

        <plugin>
            <artifactId>maven-deploy-plugin</artifactId>
            <executions>
                <!-- disable standard deploy -->
                <execution>
                    <id>default-deploy</id>
                    <phase>none</phase>
                </execution>
                <execution>
                    <id>deployEssential</id>
                    <phase>deploy</phase>
                    ...
                </execution>
            </executions>
        </plugin>
person Justin Rowe    schedule 03.02.2014

Альтернатива использованию встроенного плагина развертывания (предназначенного для развертывания артефактов maven):

  • Отключить встроенный механизм развертывания
  • Включите wagon-maven-plugin для этапа развертывания
  • Добавьте учетные данные FTP в HOME/.m2/settings.xml
  • Выполните mvn deploy, чтобы скопировать файл FTP

<!-- disable standard deploy -->
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-deploy-plugin</artifactId>
  <version>3.0.0-M1</version>
  <executions>
    <execution>
      <id>default-deploy</id>
      <phase>none</phase>
    </execution>
  </executions>
</plugin>
<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>wagon-maven-plugin</artifactId>
  <version>1.0</version>
  <executions>
    <execution>
      <id>deploy-release</id>
      <phase>deploy</phase>
      <goals>
        <goal>upload</goal>
      </goals>
      <configuration>
        <serverId>nexus</serverId>
        <url>${targetrepository}</url>
        <fromDir>${project.build.directory}</fromDir>
        <toDir>${project.version}</toDir>
        <includes>${project.artifactId}-${project.version}-demo.zip</includes>
      </configuration>
    </execution>
  </executions>
</plugin>
person Andrey    schedule 31.05.2016
comment
Это отлично сработало для всех, кому нужно было загрузить определенный набор файлов в определенное место на удаленном FTP-сервере. - person Andrew T Finnell; 09.10.2018

Почему бы не использовать плагин сборки, который может прикреплять артефакты к вашему текущему развертыванию, или использовать плагин build-helper-maven-plugin, который может просто прикреплять другие артефакты к вашей сборке. Использование плагина deploy во время обычной сборки — неправильный путь.

person khmarbaise    schedule 30.11.2012
comment
Вы уже намекали на это вчера. Основная причина заключается в структуре моего проекта, где у меня есть проект A, зависящий от проектов B и C. Я хочу развернуть артефакты из A, но в группе, определенной B. Так что, как обстоят дела, присоединение не вариант. Думаю, мне все-таки придется реструктурировать вещи, хотя решение только для maven было возможно. - person Urs Reupke; 30.11.2012