Мне нужен совет эксперта Maven:
У меня есть проект, который я хочу развернуть на сервере Glassfish/Payara через SFTP с помощью mvn clean package command -Denv=rec deploy
Это мой пом.xml
<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>
<resources>
<resource>
<directory>${basedir}/resources/rec</directory>
</resource>
</resources>
</build>
<distributionManagement>
<repository>
<id>my-server-recette</id>
<url>sftp://my.server.fr:/data/apps/payara/autodeploy/group-recette/webdistri</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/webdistri</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>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
<release>11</release>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.3</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>
К сожалению, когда я запускаю свою команду maven, развертывается не WAR, а весь проект. Как я могу развернуть только WAR на моем сервере Glassfish/Payara?
Спасибо за ваши ответы
Тьерри
Обновлено: запрос, который я получил: «Используя maven, скомпилируйте, протестируйте, упакуйте и разверните военный архив в папке авторазвертывания payara»
Команда deploy
предназначена для загрузки чего-либо в Nexus или Artifactory, а не для развертывания на серверах.
Почему вы изменили настройки по умолчанию <sourceDirectory>${basedir}/src</sourceDirectory>
?? Обычно это не имеет смысла... соблюдайте соглашения.. Для развертывания на сервере приложений вы можете использовать: github.com/probedock/glassfish-maven-plugin, а не сам Maven, поскольку уже упомянутое управление дистрибутивом предназначено для развертывания на менеджер репо...
Спасибо, tgdavies, J Fabian Meier, khmarbaise. Чтобы ответить @khmarbaise, я пишу документацию по переносу существующих веб-сервисов на maven. Эти исторические веб-сервисы не соблюдают древовидную структуру, созданную maven, но остаются функциональными. Меня попросили сделать так, чтобы иметь возможность перенести существующие веб-сервисы с минимальным количеством изменений, которые могли бы поставить под угрозу их работу. Я собираюсь взглянуть на следы, которые вы все мне дали, и которые, кажется, ведут в одном направлении.
Хорошо, этот плагин не решение для меня. Когда я вас читал, я думал, что это позволяет развернуть архив через sftp, но, похоже, это не так.
Запрос, который я получил: «Используя maven, скомпилируйте, протестируйте, упакуйте и разверните военный архив в папке autodeploy payara».
Благодаря фрагменту трека, который дал мне @tgdavies (большое спасибо), мне удалось сделать то, что я хотел, используя расширение org.apache.maven.wagon:wagon-ssh
и плагин org.codehaus.mojo:wagon-maven-plugin
вместе.
вот как я настроил его в своем pom.mxl:
<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>
</plugins>
<!-- https://mvnrepository.com/artifact/org.codehaus.mojo/wagon-maven-plugin -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId> car-maven-plugin</artifactId>
<version>2.0.0</version>
<executions>
<execution>
<id>rec</id>
<phase>deploy</phase>
<goyals
<goal>upload-single</goal>
</goals>
<configuration>
<fromFile>${project.build.directory}/${project.build.finalName}.${project.packaging}</fromFile>
<url>scp://[email protected]:/data/apps/payara/autodeploy/group-recette</url>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
А вот команда для компиляции, тестирования, упаковки и развертывания:
mvn clean package -Denv=rec wagon:upload-single@rec
Надеюсь, что мой ответ может помочь другим людям с этой конкретной потребностью.
Хорошего дня
Тьерри
DistributionManagement предназначен для указания репозиториев для развертывания артефактов. Посмотрите на цель загрузки вагона.