63 votes

Maven copie un fichier local vers un serveur distant en utilisant SSH

Maven peut-il copier un fichier local sur un serveur distant en utilisant SSH ?

Je veux spécifier l'emplacement dans le fichier de configuration maven et copier ce fichier (ou ces fichiers) sur le serveur chaque fois que la phase de déploiement est exécutée.

39voto

Rich Seller Points 46052

Le plugin maven-deploy vous permet de configurer la phase de déploiement pour déployer sur un serveur en utilisant scp. Il existe une page dans le documentation qui décrit comment faire.

Je pense que cela remplacera le déploiement normal au lieu de le compléter, donc ce n'est peut-être pas ce que vous recherchez.

Si vous avez besoin de déployer vers un dépôt Maven traditionnel et de livrer le fichier au serveur distant, vous devrez utiliser la tâche scp comme le suggèrent les autres réponses.

En cette réponse J'ai décrit comment configurer la tâche ftp, la tâche scp est presque identique sauf que vous devrez peut-être ajouter les attributs keyfile et passphrase (et changer le nom de la tâche de ftp à scp évidemment).

2 votes

L'un des inconvénients de l'utilisation maven-deploy-plugin est qu'il télécharge toujours un maven artifact s'il l'est, il sera téléchargé vers un groupId/artifactId/version/artifactId-version.ext chemin d'accès, si vous souhaitez simplement télécharger un fichier vers un emplacement spécifique du serveur. antrun plugin avec scp La tâche permet de faire le travail.

0 votes

Cette réponse est obsolète. Il existe un moyen direct de copier un fichier en utilisant le plugin Wagon. Voir stackoverflow.com/a/29208672/318054 .

0 votes

@fnt pouvez-vous préciser ? En regardant la documentation liée, il semble que ce soit effectivement la manière la plus "officielle".

21voto

PaoloC Points 133

Jetez un coup d'œil à Plugin Maven Wagon

Pour l'essayer manuellement avec une simple ligne de commande : mvn org.codehaus.mojo:wagon-maven-plugin:1.0:upload -Dwagon.url=scp://username:userpassword@myserver -Dwagon.fromDir=target -Dwagon.includes=*.ear -Dwagon.toDir=/home/elisabetta

Dans les deux cas, assurez-vous d'ajouter l'extension SSH pour Wagon à votre pom.xml :

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

14voto

Brian Agnew Points 143181

Pourquoi ne pas utiliser la fourmi SCP que vous pouvez exécuter dans Maven ?

2 votes

Il est intéressant de noter que vous pouvez l'exécuter avec maven en utilisant la fonction antrun plugin maven

8voto

holmis83 Points 851

Même idée que PaoloC en utilisant Plugin Maven Wagon avec l'extension wagon-ssh, mais la configuration dans le fichier pom et l'exécuter sur la phase spécifiée, cet exemple copie le fichier war sur un serveur distant avec 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://username@myserver/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>

Le site <phase> est facultative. Vous pouvez lancer uniquement l'exécution du téléchargement avec la commande :

mvn wagon:upload-single@upload-to-myserver

5voto

Aaron Digulla Points 143830

Maven n'est pas un outil générique, c'est un outil qui permet de rendre votre processus de construction réutilisable. Je suggère d'utiliser un antrun embarqué étape de construction. Dans cette étape, vous pouvez faire n'importe quoi en utilisant la syntaxe ant normale que vous utiliseriez dans build.xml.

1 votes

Il faut savoir que vous aurez besoin des fourmis. scp tâche, voir ant.apache.org/manual/Tasks/scp.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X