Развертывание Maven WAR

Мне нужен совет эксперта 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»

DistributionManagement предназначен для указания репозиториев для развертывания артефактов. Посмотрите на цель загрузки вагона.

tgdavies 11.12.2020 11:51

Команда deploy предназначена для загрузки чего-либо в Nexus или Artifactory, а не для развертывания на серверах.

J Fabian Meier 11.12.2020 11:54

Почему вы изменили настройки по умолчанию <sourceDirectory>${basedir}/src</sourceDirectory>?? Обычно это не имеет смысла... соблюдайте соглашения.. Для развертывания на сервере приложений вы можете использовать: github.com/probedock/glassfish-maven-plugin, а не сам Maven, поскольку уже упомянутое управление дистрибутивом предназначено для развертывания на менеджер репо...

khmarbaise 11.12.2020 13:52

Спасибо, tgdavies, J Fabian Meier, khmarbaise. Чтобы ответить @khmarbaise, я пишу документацию по переносу существующих веб-сервисов на maven. Эти исторические веб-сервисы не соблюдают древовидную структуру, созданную maven, но остаются функциональными. Меня попросили сделать так, чтобы иметь возможность перенести существующие веб-сервисы с минимальным количеством изменений, которые могли бы поставить под угрозу их работу. Я собираюсь взглянуть на следы, которые вы все мне дали, и которые, кажется, ведут в одном направлении.

theirman 14.12.2020 08:33

Хорошо, этот плагин не решение для меня. Когда я вас читал, я думал, что это позволяет развернуть архив через sftp, но, похоже, это не так.

theirman 14.12.2020 14:05

Запрос, который я получил: «Используя maven, скомпилируйте, протестируйте, упакуйте и разверните военный архив в папке autodeploy payara».

theirman 14.12.2020 14:06
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
6
193
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Благодаря фрагменту трека, который дал мне @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

Надеюсь, что мой ответ может помочь другим людям с этой конкретной потребностью.

Хорошего дня

Тьерри

Другие вопросы по теме