2012-02-14 4 views
3

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

Проекты используют maven как инструмент сборки. Теперь я хочу реализовать интеграционный тест для веб-приложения. Для этого я хочу использовать плагин maven-embedded-glassfish. У меня есть следующие настройки 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 для него, потому что если я сделаю модификацию, я хочу автоматически использовать новую версию веб-сервиса.

ответ

3

Я считаю, с помощью [email protected] и Mister Bhavani Шанкар следующее решение:

<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> 

Teoretically вы можете установить зависимость в мавена войны, а затем развернуть файл войны из каталога lib.

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

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

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

 <systemProperties> 
     <property>glassfish.embedded.tmpdir=target/glassfish</property> 
     </systemProperties> 
0

Для 3.1.1 версии Maven встраиваемый-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>

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

Смежные вопросы