2015-11-17 1 views
1

J'essaie de copier un fichier jar construit par maven dans un répertoire d'un hôte distant, pas un référentiel. J'ai essayé user1050755 répondre ici Using Maven for deployment qui utilise le maven-antrun-plugin et aussi j'ai essayé le plugin wagon-ssh. Voici l'extrait pertinent de mon espérons-pom.xmlMaven déployer sur l'hôte distant ssh (scp) non référentiel

<build> 
     <extensions> 
      <extension> 
       <groupId>org.apache.maven.wagon</groupId> 
       <artifactId>wagon-ssh</artifactId> 
       <version>2.9</version> 
      </extension> 
     </extensions> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>wagon-maven-plugin</artifactId> 
       <version>1.0</version> 
       <executions> 
        <execution> 
         <id>xd</id> 
         <phase>deploy</phase> 
         <goals> 
          <goal>upload</goal> 
         </goals> 
         <configuration> 
          <fromDir>target</fromDir> 
          <includes>xml-to-json-transformer-0.0.1-SNAPSHOT.jar</includes> 
           <excludes/> 
           <url>scp://spade.innoimm.local</url> 
           <toDir>/opt/xd/custom-modules/processor</toDir> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
        <artifactId>maven-antrun-plugin</artifactId> 
        <executions> 
         <execution> 
          <id>scp</id> 
          <phase>deploy</phase> 
          <configuration> 
           <tasks> 
            <scp todir="[email protected]:/opt/xd/custom-modules/processor" 
             sftp="true" 
             keyfile="C:\MerucurioVagrant\repo\mercurio-vagrant\insecure_private_key.ppk" 
             failonerror="false" 
             verbose="true" 
             passphrase="nopass" 
            > 
             <fileset dir="target"> 
              <include 
               name="xml-to-json-transformer-0.0.1-SNAPSHOT.jar"/> 
             </fileset> 
            </scp> 
           </tasks> 
          </configuration> 
          <goals> 
           <goal>run</goal> 
          </goals> 
         </execution> 
        </executions> 
        <dependencies> 
         <dependency> 
          <groupId>org.apache.ant</groupId> 
          <artifactId>ant-jsch</artifactId> 
          <version>1.9.4</version> 
         </dependency> 
        </dependencies> 
       </plugin> 
     </plugins> 
    </build> 

Pour les deux plug-ins que je reçois la même erreur

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project xml-to-json-transformer: Deployment failed: repository element was not specified in the POM inside distributionManagement element or in -DaltDeploymentRepository=id::layout::url parameter -> [Help 1] 

Mais je ne veux pas de déployer dans un référentiel, je pensais que le antrun- plugin me laisserait simplement copier un fichier sur un hôte distant sans restrictions, qu'est-ce qui me manque?

Répondre

1

Je fini par utiliser maven-plugin-antrun mais utilisé l'intégration test pour la phase. La commande maven que j'ai utilisée était mvn package integration-test. J'ai également utilisé l'attribut trust = "true" car je ne pouvais pas me débarrasser d'une exception jsch com.jcraft.jsch.JSchException: UnknownHostKey:. J'ai posté une question à ce sujet ici JSch: UnknownHostKey exception even when the hostkey fingerprint is present in the known_hosts file

<plugin> 
       <artifactId>maven-antrun-plugin</artifactId> 
       <version>1.8</version> 
       <configuration> 
        <tasks> 
         <scp todir="[email protected]:~/maven-scp" 
          port="2200" trust="true" keyfile="C:\keys\openSSH_pair1\open_ssh_private" 
          failonerror="false" verbose="true" passphrase="pass"> 
          <fileset dir="target"> 
           <include name="xml-to-json-transformer-0.0.1-SNAPSHOT.jar" /> 
          </fileset> 
         </scp> 
        </tasks> 
       </configuration> 
       <executions> 
        <execution> 
         <id>scp</id> 
         <phase>integration-test</phase> 
         <goals> 
          <goal>run</goal> 
         </goals> 
        </execution> 
       </executions> 
       <dependencies> 
        <dependency> 
         <groupId>com.jcraft</groupId> 
         <artifactId>jsch</artifactId> 
         <version>0.1.53</version> 
        </dependency> 
        <dependency> 
         <groupId>org.apache.ant</groupId> 
         <artifactId>ant-jsch</artifactId> 
         <version>1.9.6</version> 
        </dependency> 
       </dependencies> 
      </plugin> 
     </plugins> 
1

Parce que vous utilisez deploy de phase, vous avez besoin distributionManagement ou altDeploymentRepository: Dans votre cas, il y a deux solutions:

  1. sauter phase de déploiement comme celui-ci:

    <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-deploy-plugin</artifactId> 
        <version>X.Y</version> 
        <configuration> 
         <skip>true</skip> 
        </configuration> 
    </plugin> 
    
  2. changement

    <phase>deploy</phase> 
    

Pour

<phase>install</phase> 
0

Avez-vous résolu ce problème?

Je face même problème à la plateforme Windows avec Apache Maven 3.2.5

La raison est que Maven ne peut pas détecter <serveur> config à settings.xml

donc Ma solution est ci-dessous.

  1. ajouter un compte ssh à l'adresse URL.
 

    <configuration> 
     <url>scp://[email protected]</url> 
    </configuration> 

  1. mvn déployer

puis en tapant le mot de passe à la ligne de commande.

Maintenant, j'essaie de trouver une meilleure solution.

Je l'espère ...