Bonjour,

Je débute en maven et j'en apprends tous les jours.
Aujd, j'aurais besoin de vos conseils pour savoir comment déployer une archive WAR vers un dossier sur deux serveurs distants : l'un de recette, l'autre de prod.

Contexte :
Mon responsable me demande de rédiger une documentation pour permettre aux autres développeurs de mon entreprise de migrer leurs webservices existants vers Maven en modifiant le moins possibles ces webservices qui sont historiques et pleinement fonctionnels. Ces webservices sont déployés vers des serveurs d'applications Payara (fork de Glassfish) en passant, obligatoirement, par le dossier d'autodéploiement de Payara (pour un filtrage de droits utilisateurs/groupes qui n'a aucune importance ici)

Mon souci :
J'ai déjà essayé de déployer mes archives WAR en contournant l'utilisation du plugin maven-deploy-plugin (mais qui sert à déployer vers des dépôts de sources essentiellement si j'ai bien compris), en essayant l'utilisation de maven-install-plugin (qui lui n'installe le webservice qu'en local ... faudra m'expliquer l'utilité de ce truc du coup ), ... rien n'y fait !

Pour être plus concret, actuellement, j'utilise les commandes suivantes pour compiler/packager mes webservices :
  • pour le serveur recette : mvn clean package -Denv=rec
  • pour le serveur production : mvn clean package -Denv=prod


Comment pourrais-je faire en sorte que je puisse déployer uniquement mon archive WAR dans le dossier autodeploy de mes serveurs de recette et de production ? Quels plugins me permettrait de faire du SFTP ? Comment paramétrer mon pom.xml pour gérer cette double destination (peut-être <profiles> comme pour le packaging) ?

Bref, j'ai sérieusement besoin de votre aide. Mille mercis.
Thierry

PS: voici, pour l'instant, mon pom.xml
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>fr.inrae.sicpa</groupId>
  <artifactId>TraceLBSoapWS</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
 
  <properties>
    <encoding>UTF-8</encoding>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.version>3.1</maven.compiler.version>
    <maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>
  </properties>
 
  <dependencies>
    <!-- https://mvnrepository.com/artifact/jakarta.jws/jakarta.jws-api -->
    <dependency>
      <groupId>jakarta.jws</groupId>
      <artifactId>jakarta.jws-api</artifactId>
      <version>2.1.0</version>
    </dependency>
  </dependencies>
 
  <profiles>
    <!-- Profil pour l environnement de recette -->
    <profile>
      <id>rec</id>
      <activation>
        <property>
          <name>env</name>
          <value>rec</value>
        </property>
      </activation>
      <build>
        <finalName>TraceLBSoapWS-rec</finalName>
        <resources>
          <resource>
            <filtering>true</filtering>
            <directory>${basedir}/resources/rec</directory>
            <includes>
              <include>*.war</include>
            </includes>
          </resource>
        </resources>
      </build>
      <distributionManagement>
        <repository>
         <id>my-server-recette</id>
         <url>sftp://my.server.fr:/data/apps/payara/autodeploy/group-recette</url>
        </repository>
      </distributionManagement>
    </profile>
     <!-- Profil pour l environnement de production -->
    <profile>
      <id>prod</id>
      <activation>
        <property>
          <name>env</name>
          <value>prod</value>
        </property>
      </activation>
      <build>
        <resources>
          <resource>
            <directory>${basedir}/resources/prod</directory>
          </resource>
        </resources>
      </build>
      <distributionManagement>
        <repository>
         <id>my-server-production</id>
         <url>sftp://my.server.fr:/data/apps/payara/autodeploy/group-production</url>
        </repository>
      </distributionManagement>
    </profile>
  </profiles>
 
  <build>
    <finalName>TraceLBSoapWS</finalName>
    <sourceDirectory>${basedir}/src</sourceDirectory>
    <testSourceDirectory>${basedir}/test</testSourceDirectory>
    <resources>
      <resource>
        <directory>${basedir}/resources</directory>
        <filtering>true</filtering>
        <includes>
          <include>*.properties</include>
          <include>*.xml</include>
        </includes>
        <excludes>
          <exclude>**/*.java</exclude>
        </excludes>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-compiler-plugin -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.1</version>
        <configuration>
          <source>11</source>
          <target>11</target>
          <release>11</release>
        </configuration>
      </plugin>
      <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-enforcer-plugin -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-enforcer-plugin</artifactId>
        <version>1.4.1</version>
        <executions>
          <execution>
            <id>enforce-profile-target</id>
            <phase>validate</phase>
            <goals>
              <goal>enforce</goal>
            </goals>
            <configuration>
              <rules>
                <requireActiveProfile>
                  <profiles>rec, prod</profiles>
                  <all>false</all>
                </requireActiveProfile>
              </rules>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-deploy-plugin -->
<!--
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-deploy-plugin</artifactId>
        <version>2.8.2</version>
        <configuration>
          <updateReleaseInfo>false</updateReleaseInfo>
          <generatePom>false</generatePom>
          <file>${project.build.directory}/${project.build.finalName}.${project.packaging}</file>
          <url>sftp://my.server.fr:/data/apps/payara/autodeploy/group-recette</url>
          <groupId>${project.groupId}</groupId>
          <artifactId>${project.artifactId}</artifactId>
          <version>${project.version}</version>
          <uniqueVersion>false</uniqueVersion>
        </configuration>
      </plugin>
-->
      <!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-war-plugin -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.3.1</version>
        <configuration>
          <warSourceDirectory>${basedir}/WebContent</warSourceDirectory>
          <!-- exclude web.xml file -->
          <failOnMissingWebXml>false</failOnMissingWebXml>
          <warSourceExcludes>WEB-INF/web.xml</warSourceExcludes>
        </configuration>
      </plugin>
    </plugins>
    <extensions>
      <!-- https://mvnrepository.com/artifact/org.apache.maven.wagon/wagon-ssh -->
      <extension>
        <groupId>org.apache.maven.wagon</groupId>
        <artifactId>wagon-ssh</artifactId>
        <version>3.4.0</version>
      </extension>
    </extensions>
  </build>
</project>