Подтвердить что ты не робот

Maven скопирует локальный файл на удаленный сервер с помощью SSH

Может ли Maven скопировать локальный файл на удаленный сервер с помощью SSH?

Я хочу указать местоположение в файле конфигурации maven и скопировать этот файл (или файлы) на сервер при каждом этапе развертывания.

4b9b3361

Ответ 1

Модуль maven-deploy-plugin позволяет настроить фазу развертывания для развертывания на сервере с помощью scp. В документации есть страница, в которой описывается, как это можно сделать.

Я верю, что это заменит обычное развертывание вместо добавления к нему, так что это может быть не то, что вам нужно.

Если вам нужно развернуть традиционный репозиторий Maven, а также доставить файл на удаленный сервер, вам нужно будет использовать задачу scp, как предлагают другие ответы.

В этом ответе Я описал, как настроить задачу ftp, задача scp почти идентична, за исключением того, что вам может потребоваться добавить атрибуты keyfile и passphrase (и измените имя задачи с ftp на scp, очевидно).

Ответ 2

Почему бы не использовать задачу Ant SCP, которую вы можете запустить в Maven?

Ответ 3

Посмотрите плагин Maven Wagon

Попробуйте вручную с помощью простой командной строки: mvn org.codehaus.mojo:wagon-maven-plugin:1.0:upload -Dwagon.url=scp://username:[email protected] -Dwagon.fromDir=target -Dwagon.includes=*.ear -Dwagon.toDir=/home/elisabetta

В обоих случаях обязательно добавьте расширение SSH для Wagon к вашему pom.xml:

<extensions>
    <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ssh</artifactId>
        <version>2.8</version>
    </extension>
</extensions>

Ответ 4

Maven - не универсальный инструмент, это инструмент, позволяющий сделать ваш процесс сборки многоразовым. Я предлагаю использовать шаг встроенный antrun. На этом шаге вы можете делать все, используя обычный синтаксис ant, который вы использовали бы в файле build.xml.

Ответ 5

Хотя этот вопрос не совсем новый, сегодня я оказался в подобной ситуации. Моя цель - загрузить файлы и запустить команды на удаленном сервере, к которому я должен подключиться (через другой сервер). Мне удалось создать решение для этого с помощью ant (который снова может быть запущен из maven, как указано здесь).

Задача Ants sshsession создает только туннель, который вы можете использовать для задач внутри. Задачи внутри не запускаются автоматически на удаленном сервере, но вы можете использовать задачу sshexec вместе с туннелем, чтобы достичь этого. Также задача scp теперь может загружаться через туннель на удаленный сервер. Вот пример:

<sshsession host="${jumphost}" port="22" username="${user}" password="${password}" trust="true">
    <localtunnel lport="${localTunnelPort}" rhost="${targethost}" rport="22"/>
    <sequential>
        <!-- run a command on the remote server (here mkdir) -->
        <sshexec host="localhost" port="${localTunnelPort}" username="${user.param}" password="${password.param}" command="mkdir ${home}/foobar" trust="true" />
        <!-- upload a file to the remote server -->
        <scp port="${localTunnelPort}" file="test_file.txt" todir="${user.param}:${password.param}@localhost:${home}/foobar/" trust="true" />
    </sequential>
</sshsession>

Ответ 6

Те же идеи, что и PaoloC, используя плагин Maven Wagon с расширением wagon-ssh, но конфигурацию в pom файле и запуск на указанной фазе, в этих примерах копируется военный файл на удаленный сервер с SSH

<build>
  <plugins>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>wagon-maven-plugin</artifactId>
      <version>1.0</version>
      <executions>
        <execution>
          <id>upload-to-myserver</id>
          <phase>deploy</phase>
          <goals>
            <goal>upload-single</goal>
          </goals>
          <configuration>
            <fromFile>${project.build.directory}/${project.build.finalName}.war</fromFile>
            <url>scp://[email protected]/path</url>
          </configuration>
        </execution>
      </executions>
    </plugin>
    <!-- other plugins ... -->
  </plugins>
  <extensions>
    <extension>
      <groupId>org.apache.maven.wagon</groupId>
      <artifactId>wagon-ssh</artifactId>
      <version>2.8</version>
    </extension>
  </extensions>
</build>

Тег <phase> не является обязательным. Вы можете запустить только выполнение загрузки с помощью команды:

mvn wagon:[email protected]