我有以下用例: 我正在使用Spring MVC实现一个使用Spring WS实现的Web服务的Web应用程序。
项目使用maven作为构建工具。 现在我想实现Web应用程序的集成测试。 为此,我想使用maven-embedded-glassfish-plugin。 我在pom.xml中有以下maven配置:
<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文件的部署。 在这一刻,这不是我的pom的依赖。 我只有一个存根类来调用web-app.war应用程序中定义的Web服务。
那么如何部署第二个应用程序有什么好的解决方案呢?
我想自动成为某种东西,可能会使用maven存储库,因为如果我进行修改,我想自动使用新版本的Web服务。
答案 0 :(得分:3)
我在users@embedded-glassfish.java.net和Mister Bhavani Shankar的帮助下找到了以下解决方案:
<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>
从理论上讲,你可以在war的maven中设置依赖关系,然后从lib目录中部署war文件。
有关此插件的一些有趣内容,如果有人想使用该选项:
<instanceRoot>${project.build.directory}/glassfish</instanceRoot>
仅在使用现有glassfish安装的版本3.1.1中不起作用。 如果你想设置这个属性,那么使用(没有安装glassfish):
<systemProperties>
<property>glassfish.embedded.tmpdir=target/glassfish</property>
</systemProperties>
答案 1 :(得分:0)
对于maven-embedded-glassfish-plugin的3.1.1版本,你只需要将“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>
部分然后启动服务器,它正在缓慢加载项目并且它不稳定。