Maven Wagon plugin: Can Wagen: Upload Upload auf mehrere Standorte?
-
08-10-2019 - |
Frage
Ich bin auf der Suche in den Maven Plugin Wagon einige Artefakte zu versuchen, das Hochladen remote UNC-Server-Aktien (\\servername\share\directory\to\put\to
), und ich habe es wie so in den POM Arbeit konfiguriert bekommen:
<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>
Dies funktioniert gut für einen Server , wenn ich gehe in -Dservername=x -Dsharename=y
, aber wie kann ich es skalieren, damit ich eine deploy für QA oder Prod laufen kann, wo ich mehrere haben Server zu implementieren?
Ich habe in Betracht gezogen (und geschrieben) ein Skript ausführen mvn wagon:upload -Penvironment#
mehrfach - einmal für jeden Server - aber mich fehlerhaft zu sein scheint. Wenn ich Beschuss auf ein Skript aus, diesen Prozess zu behandeln, konnte ich genauso gut Skript aus der gesamten deploy auch. Dies ist jedoch etwas wegnimmt von der Nützlichkeit von Wagon (und Maven) ...
Gibt es eine Möglichkeit, mehrere <executions>
für ein Ziel zu laufen? Zum Beispiel, mehrere Profile konfiguriert wagon:upload
Aufgaben ausgeführt wird, wenn ich mvn deploy -Pqa
nur laufen?
Lösung
Wenn Sie mehrere Profile verwenden möchten, könnten Sie einfach verwenden: mvn deploy -Denv=qa
und lösen einige Profile auf dieser Eigenschaft und definieren die Konfiguration für Ihre severs in den Profilen. Für diese Art von Profil Aktivierung Blick auf
http://maven.apache.org/guides/introduction/ Einführung zu profiles.html
und die 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>