2010-12-05 6 views
3

Ich bin auf der Suche in die Maven Wagon Plugin einige Artefakte zu remote UNC-Server-Aktien (\\servername\share\directory\to\put\to) zu versuchen, das Hochladen, und ich habe es in der POM wie so zu arbeiten bekommen konfiguriert:Maven Wagon plugin: Kann Wagen: Laden Sie den Upload zu mehreren Orten hoch?

<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> 

Dieser große für arbeitet Ein Server wenn ich -Dservername=x -Dsharename=y übergebe, aber wie kann ich es skalieren, damit ich eine Bereitstellung für QA oder Prod ausführen kann, wo ich mehrere Server bereitstellen muss?

Ich habe (und schreibe) ein Skript, um mvn wagon:upload -Penvironment# mehrere Male ausgeführt - einmal für jeden Server - aber das scheint mir fehlerhaft. Wenn ich ein Skript für diesen Prozess ausspioniere, könnte ich genauso gut die gesamte Implementierung scripten. Dies nimmt jedoch die Nützlichkeit von Wagon (und Maven) ...

Gibt es eine Möglichkeit, mehrere <executions> für ein Ziel zu laufen? Zum Beispiel laufen mehrere Profile konfiguriert wagon:upload Aufgaben, wenn ich gerade mvn deploy -Pqa ausführen?

+0

Anstatt einzeln hochzuladen, können sich Ihre Server nicht nur ein Netzlaufwerk teilen? Sie sollten wahrscheinlich im selben Netzwerk sein und sich sehen. Nur ein Vorschlag. –

+0

Ich bin mir nicht sicher, dass das funktionieren würde. Der Ordner, für den ich die Bereitstellung bereitstelle, ist der Ordner "autodeploy" der Weblogic-Installation, der für jede Instanz spezifisch ist. Ich bin nicht dagegen, das zu tun, aber ich weiß nicht, ob ich es schon einmal gesehen habe und nicht wissen würde, wie ich es machen soll. –

Antwort

3

Wenn Sie mehrere Profile verwenden möchten, können Sie einfach mvn deploy -Denv=qa verwenden und einige Profile für diese Eigenschaft auslösen und die Konfiguration für Ihre Server in den Profilen definieren. Für diese Art von Profil Aktivierung Blick auf

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

und der Suche nach

-Denvironment = test

Hier ist ein Beispiel POM, das macht zwei Ausführungen der Maven-antrun-Plugin in einem 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

Ermöglicht die Profilaktivierung mehrere Ausführungen desselben Plugins? In den obigen Ausführungen ändert sich nur die URL zwischen einem Server und einem anderen Server. Ich würde 2, 3 oder mehr Ausführungen des oben genannten Plugins auf einen Schlag ausführen wollen, um das auf allen Servern zu installieren. –

+0

Ja, tut es (nur versucht ;-)! Ich habe meine Antwort bearbeitet und ein Beispiel hinzugefügt. – Jan

+0

ausgezeichnet! Ich werde das jetzt für mein Projekt ausprobieren. Es ist ein bisschen ausführlich, aber es ist zumindest möglich. –