2010-12-05 1 views
3

Je suis à la recherche dans le Maven Wagon Plugin pour tenter de télécharger des artefacts à des partages distants UNC Server (\\servername\share\directory\to\put\to), et je l'ai obtenu il configuré pour fonctionner comme si dans le POM:Maven Wagon plugin: Can wagon: télécharger le téléchargement à plusieurs endroits?

<build> 
    <extensions> 
    <extension> 
     <groupId>org.apache.maven.wagon</groupId> 
     <artifactId>wagon-file</artifactId> 
     <version>1.0-beta-7</version> 
    </extension> 
    </extensions> 
<plugins> 
    <plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>wagon-maven-plugin</artifactId> 
    <version>1.0-beta-3</version> 
    <executions> 
     <execution> 
     <id>upload-jar-to-folder</id> 
     <phase>deploy</phase> 
     <goals> 
      <goal>upload</goal> 
     </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <fromDir>${project.build.directory}</fromDir> 
     <includes>*</includes> 
     <url>file://localhost///${servername}/${sharename}</url> 
     <toDir>directory/to/put/artifact</toDir> 
    </configuration> 
    </plugin> 
    ... 
</build> 

Cela fonctionne très bien pour un serveur lorsque je passe en -Dservername=x -Dsharename=y, mais comment puis-je le faire évoluer afin de pouvoir déployer un déploiement pour QA ou Prod où j'ai plusieurs serveurs à déployer?

J'ai considéré (et écrit) un script pour exécuter mvn wagon:upload -Penvironment# plusieurs fois - une fois pour chaque serveur - mais cela me semble imparfait. Si je m'explique à l'aide d'un script pour gérer ce processus, je pourrais tout aussi bien écrire tout le déploiement. Cependant, cela enlève de l'utilité du Wagon (et Maven) ...

Est-il possible d'exécuter plusieurs <executions> pour un but? Par exemple, en exécutant plusieurs tâches configurées wagon:upload de profil quand je viens d'exécuter mvn deploy -Pqa?

+0

Au lieu de télécharger individuellement, vos serveurs ne peuvent-ils pas simplement partager un lecteur réseau? Ils devraient probablement être dans le même réseau et se voir. Juste une suggestion. –

+0

Je ne suis pas sûr que cela fonctionnerait. Le dossier sur lequel je déploie est le dossier 'autodeploy' de l'installation Weblogic, qui est spécifique à chaque instance. Je ne suis pas contre, mais je ne sais pas si je l'ai déjà vu et je ne sais pas comment le faire. –

Répondre

3

Si vous souhaitez utiliser plusieurs profils, vous pouvez simplement utiliser: mvn deploy -Denv=qa et déclencher certains profils sur cette propriété et définir la configuration de vos Severs dans les profils. Pour ce genre de regard d'activation de profil à

http://maven.apache.org/guides/introduction/introduction-to-profiles.html

et recherche de

-Denvironment = test

Voici un exemple POM qui fait deux exécutions de la maven-AntRun-plugin dans un build :

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>org.stackoverflow</groupId> 
    <artifactId>q5328617</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <profiles> 
    <profile> 
     <activation> 
      <property> 
       <name>env</name> 
       <value>qa</value> 
      </property> 
     </activation> 
     <id>qa1</id> 
     <build> 
      <plugins> 
       <plugin> 
        <artifactId>maven-antrun-plugin</artifactId> 
        <executions> 
         <execution> 
         <id>qa1</id> 
         <phase>test</phase> 
         <configuration> 
          <tasks> 
           <echo level="info">Executing qa1</echo> 
          </tasks> 
         </configuration> 
         <goals> 
          <goal>run</goal> 
         </goals> 
         </execution> 
        </executions> 
        <dependencies> 
        </dependencies> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
    <profile> 
     <activation> 
      <property> 
       <name>env</name> 
       <value>qa</value> 
      </property> 
     </activation> 
     <id>qa2</id> 
     <build> 
      <plugins> 
       <plugin> 
        <artifactId>maven-antrun-plugin</artifactId> 
        <executions> 
         <execution> 
         <id>qa2</id> 
         <phase>test</phase> 
         <configuration> 
          <tasks> 
           <echo level="info">Executing qa2</echo> 
          </tasks> 
         </configuration> 
         <goals> 
          <goal>run</goal> 
         </goals> 
         </execution> 
        </executions> 
        <dependencies> 
        </dependencies> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
    </profiles> 
</project> 
+0

L'activation du profil permet-elle plusieurs exécutions du même plugin? Dans ce qui précède, la seule chose qui change entre le déploiement sur un serveur à l'autre est l'URL. Je voudrais exécuter 2, 3 ou plusieurs exécutions du plugin ci-dessus d'un seul coup pour l'installer sur tous les serveurs. –

+0

Oui c'est le cas (juste essayé ;-)! J'ai édité ma réponse et ajouté un exemple. – Jan

+0

excellent! Je vais essayer cela sur mon projet pour le moment. C'est un peu bavard, mais c'est au moins possible. –

Questions connexes