maven日记(九):使用Maven构建Web应用

>> 使用jetty-maven-plugin进行测试

在进行web开发的时候,我们总是无法避免打开浏览器测试,但是需要编译,测试、打包、测试、部署等一系列环节,这个很浪费时间。而jetty-maven-plugin这个插件利用内置的jetty web容器,周期轮训代码更新,省去我们打包和部署步骤,大大缩减测试时间。另外,web测试应该仅限于跟前台密切相关的测试,页面测试等。而后台的测试一定要写单元测试去测。

首先配置jetty-maven-plugin插件:

<plugin>
    <groupId>org.mortbay.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>7.1.0.RC1</version>
    <configuration>
        <scanIntervalSeconds>10</scanIntervalSeconds>
        <webAppConfig>
            <contextPath>/account</contextPath>
        </webAppConfig>
    </configuration>
</plugin>

从上面可以看出,这个插件不是官方插件,所以必须在mvn的settings.xml文件中配置一下:

<settings>
    <pluginGroups>
        <pluginGroup>org.mortbay.jetty</pluginGroup>
    </pluginGroups>
    ......
</settings>

现在可以运行如下命令启动jetty-maven-plugin了,默认是8080端口:

# mvn jetty:run

如果希望其他端口启动jetty web容器,命令:

# mvn jetty:run -Djetty.port=9999

这时候,可以在浏览器中输入: http://localhost:9999/account/  测试应用了

>> 使用Cargo实现自动化部署:

Cargo是一组帮助用户操作Web容器的工具,它能够帮助用户实现自动化部署。支持所有的Web容器。Cargo通过cargo-maven2-plugin提供了Maven集成。虽然cargo-maven2-plugin和jetty-maven-plugin的功能看起来相似,但是它们目的是不同的。jetty-maven-plugin主要是帮助开发人员快速的启动容器开发,而cargo是帮测试人员快速部署到本地或远程的Web容器中方便集成测试和功能测试等。

—-部署到本地的Web容器—-

Cargo支持两种本地部署方式,分别是standalone和existing模式。standalone是每次构建都从web容器安装目录复制一份配置到用户指定目录中,按照这个配置区部署,而existing是用户指定Web容器的配置目录,然后Cargo会直接使用这些配置并将应用部署到其对应的位置。

使用standalone模式:

<plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.3.1</version>
    <configuration>
        <container>
            <containerId>tomcat7x</containerId>
            <home>D:\lib\apache-tomcat-7.0.34</home>
        </container>
        <configuration>
            <type>standalone</type>
            <home>${project.build.directory}/tomcat7x</home>
            <properties>
                <cargo.servlet.port>8082</cargo.servlet.port>
            </properties>
        </configuration>
    </configuration>
</plugin>

同理,cargo插件的groupId是org.codehaus.cargo,这个不属于官方的两个Maven插件,因此还是要修改.m2文件夹中的settings.xml:

<pluginGroups>
    <pluginGroup>org.mortbay.jetty</pluginGroup>
    <pluginGroup>org.codehaus.cargo</pluginGroup>
</pluginGroups>

然后运行:mvn cargo:run,即可访问:http://127.0.0.1:8082/account-web-1.0.0-SNAPSHOT/login.jsp

——部署至远程正在运行中的Web容器中———

<plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.3.1</version>
    <configuration>
        <container>
            <containerId>tomcat7x</containerId>
            <type>remote</type>
        </container>
        <configuration>
            <type>runtime</type>
            <properties>
                <cargo.remote.username>admin</cargo.remote.username>
                <cargo.remote.password>8082</cargo.remote.password>
                <cargo.tomcat.manager.url>http://10.68.14.119:8080/manager</cargo.tomcat.manager.url>
            </properties>
        </configuration>
    </configuration>
</plugin>

之后,运行:

# mvn cargo:redeploy

即可部署热应用了,如果容器中已经部署了当前应用,cargo会将它卸载,然后重新部署。

 

本人博客已搬家,新地址为:http://yidao620c.github.io/

猜你喜欢

转载自yidao620c.iteye.com/blog/1846988