Maven-Embedded-Glassfish-плагин развертывания 2 приложений - PullRequest
3 голосов
/ 14 февраля 2012

У меня есть следующий вариант использования: У меня веб-приложение, реализованное с помощью Spring MVC, с использованием веб-службы, реализованной с помощью Spring WS.

В проектах в качестве инструмента для сборки используется maven. Теперь я хочу реализовать интеграционный тест для веб-приложения. Для этого я хочу использовать плагин maven-embedded-glassfish-plugin. У меня есть следующая конфигурация maven в pom.xml:

    <plugin>
    <groupId>org.glassfish</groupId>
    <artifactId>maven-embedded-glassfish-plugin</artifactId>
        <version>3.1.1</version>
        <configuration>
           <goalPrefix>embedded-glassfish</goalPrefix>
           <app>${basedir}/target/web-app.war</app>

           <autoDelete>true</autoDelete>
           <port>8080</port>
           <name>web-app</name>

           <configFile>src/test/resources/glassfish/domain.xml</configFile>
        </configuration>

        <executions>
           <execution>
              <id>start-glassfish</id>
              <phase>pre-integration-test</phase>
              <goals>
                 <goal>start</goal>
              </goals>
           </execution>
           <execution>
              <id>glassfish-deploy</id>
              <phase>pre-integration-test</phase>
              <goals>
                 <goal>deploy</goal>
              </goals>
           </execution>
           <execution>
              <id>glassfish-undeploy</id>
              <phase>post-integration-test</phase>
              <goals>
                 <goal>undeploy</goal>
              </goals>
           </execution>
           <execution>
              <id>stop-glassfish</id>
              <phase>post-integration-test</phase>
              <goals>
                 <goal>stop</goal>
              </goals>
           </execution>
        </executions>
      </plugin> 

Все отлично работает. Но теперь мне нужно добавить развертывание файла webservice.war. Это не зависимость моего пом в данный момент. У меня есть только класс заглушки для вызова веб-службы, определенный в приложении web-app.war.

Итак, есть ли хорошее решение для развертывания этого второго приложения?

Я хотел бы быть чем-то автоматически, возможно, используя для этого репозиторий maven, потому что, если я сделаю изменение, я хочу автоматически использовать новую версию веб-сервиса.

Ответы [ 2 ]

3 голосов
/ 21 февраля 2012

С помощью users@embedded-glassfish.java.net и мистера Бхавани Шанкара я нахожу следующее решение:

  <execution>
      <id>glassfish-additional_deployments</id>
      <phase>pre-integration-test</phase>
      <goals>
       <goal>admin</goal>
      </goals>
      <configuration>
        <commands>
          <param>deploy ${basedir}/src/test/resources/integrationtest/app-ws.war</param>
        </commands>
      </configuration>
  </execution>

Теоретически вы можете установить зависимость в maven of the war, а затем также развернуть файл war из каталога lib.

Что-то интересное в этом плагине, если кто-то хочет использовать опцию:

    <instanceRoot>${project.build.directory}/glassfish</instanceRoot>

Не работает в версии 3.1.1 только с существующей установкой Glassfish. Если вы хотите установить это свойство, используйте (без установки glassfish):

      <systemProperties>
        <property>glassfish.embedded.tmpdir=target/glassfish</property>
      </systemProperties>
0 голосов
/ 06 декабря 2013

Для версии 3.1.1 встроенного плагина maven-glass-glassfish вам просто нужно установить для свойства "glassfish.embedded.tmpdir" значение статическое значение (для Windows OS, но я ' Я не уверен, что для Linux). Потому что Maven не может преобразовать пути.

Я использую ухо для стеклянной рыбы, и оно прекрасно работает для меня.

Моя конфигурация:

    <plugin>
            <groupId>org.glassfish</groupId>
            <artifactId>maven-embedded-glassfish-plugin</artifactId>
            <version>3.1.1</version>
            <configuration>
                <systemProperties>
                    <property>glassfish.embedded.tmpdir=target/glassfish</property>
                </systemProperties>
                <app>${project.build.directory}/${build.finalName}.ear</app>
                <autoDelete>true</autoDelete>
                <port>8080</port>
                <contextRoot>test</contextRoot>
            </configuration>
            <executions>
                <execution>
                    <id>start-glassfish</id>
                    <phase>install</phase>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

Но действительно интересно, если я уберу <property>glassfish.embedded.tmpdir=target/glassfish</property>

часть и затем запустите сервер, он медленно загружает проект и он не стабилен.

...