7 Stimmen

Maven Wagon-Plugin: Kann wagon:upload an mehrere Orte hochladen?

Ich untersuche die Maven Wagon Plugin um zu versuchen, einige Artefakte auf entfernte UNC-Server-Freigaben hochzuladen ( \\servername\share\directory\to\put\to ), und ich habe es so konfiguriert, dass es in der POM so funktioniert:

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

Das funktioniert hervorragend für einen Server wenn ich eintrete -Dservername=x -Dsharename=y aber wie kann ich es so skalieren, dass ich ein Deployment für QA oder Prod durchführen kann, wo ich mehrere Server zu verteilen habe?

Ich habe ein Skript in Erwägung gezogen (und geschrieben), das Folgendes ausführt mvn wagon:upload -Penvironment# mehrere Male - einmal für jeden Server -, aber das scheint mir fehlerhaft zu sein. Wenn ich ein Skript für diesen Prozess benötige, könnte ich genauso gut die gesamte Bereitstellung in einem Skript abwickeln. Dies nimmt jedoch von der Nützlichkeit von Wagon (und Maven) weg...

Gibt es eine Möglichkeit zur Ausführung mehrerer <executions> für ein Ziel? Zum Beispiel die Ausführung mehrerer konfigurierter Profile wagon:upload Aufgaben, wenn ich einfach mvn deploy -Pqa ?

4voto

Jan Punkte 931

Wenn Sie mehrere Profile verwenden möchten, können Sie dies einfach tun: mvn deploy -Denv=qa und lösen Sie einige Profile auf diese Eigenschaft aus und definieren Sie die Konfiguration für Ihre Trennwände in den Profilen. Für diese Art der Profilaktivierung schauen Sie unter

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

und suchen Sie nach

-Umgebung=test

Hier ist ein Beispiel-POM, das zwei Ausführungen des maven-antrun-plugin in einem Build durchführt:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X