我有以下用例:我有一个用SpringMVC实现的web应用程序,它使用的是用SpringWS-实现的web服务
项目使用maven作为构建工具。现在我想实现web应用程序的集成测试。为此,我想使用maven嵌入式glassfish插件。我在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服务。
我在users@embedded-glassfish.java.net和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>
在3.1.1版本中,仅在现有的玻璃鱼安装中不起作用。如果你想设置这个属性,那么使用(不需要安装玻璃鱼):
<systemProperties>
<property>glassfish.embedded.tmpdir=target/glassfish</property>
</systemProperties>
对于3.1.1版本的maven嵌入式glassfish插件,您只需要将"glassfish.embedded.tmpdir"属性设置为静态值(对于windows操作系统,但我不确定是否适用于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>
,那真的很有趣
部分,然后启动服务器,它加载项目的速度很慢,而且不稳定。