使用maven构件web应用(十一)

web应用的部署包结构与普通构件的jar包不同,其部署包为war类型,所以声明maven项目的时候就要特殊处理,其声明和目录结构如下:

<modelVersion>4.0.0</modelVersion>

<artifactId>account-web</artifactId>

<packaging>war</packaging>主要的不同是packaging的配置。

目录结构:

-war/

 +META-INF/

 +WEB-INF/

    +classes/

  +abc.class

    +lib/

 +abc.jar

    +web.xml

 +img

+css

+js

+abc.html

+abcd.jsp

工程目录结构如下:


正常情况下,我们做测试的时候,是将工程打war包,然后手工发布到web服务器并启动,然后进行测试。

这种方式依赖大量的人工,所以我们可以使用插件简化这一过程,jetty-maven-plugin插件,可以自动化帮我们完成手工部署的动作,并且无需反复重新部署,只要部署一次,插件可以自动按照我们配置的时间做周期性检查,如果编译文件有更新的话,插件会自动加载更新,无需重新部署,但是新增类、或者修改方法名称是不行的,修改静态资源文件是可以的。

使用jetty-maven-plugin进行测试

配置如下:

<build>
    <finalName>account-web</finalName>
    <plugins>
        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty-maven-plugin</artifactId>
            <version>8.1.8.v20121106</version>
            <configuration>
                <scanIntervalSeconds>5</scanIntervalSeconds>
                <webAppConfig>
                    <contextPath>/test</contextPath>
                </webAppConfig>
            </configuration>
        </plugin>
    </plugins>
</build>
上述配置意思是,每5秒检查一次代码是否有变更,服务的访问路径为/test,

配置完成后,用mvn jetty:run 或者 mvn jetty:run -Djetty.port=9999 指定端口启动,默认端口是8080,值得一说的是,要使用上述命令启动,需要配置maven的settings.xml,配置如下:

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

该配置解决的问题是,是jetty插件别名生效,插件别名的使用与maven的机制有关,请观看其他章节的介绍。

使用cargo实现自动化部署

部署至本地web容器,有两种方式:

1.standalone:从web容器的安装目录复制一份配置到用户指定的目录,然后在此基础上部署应用,每次重新构建的使用,这个目录会被清空,所有配置被重新生成。

<plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.6.6</version>
    <configuration>
        <container>
  web容器的类型和版本,这个值插件有定义不是自定义的名字
       <containerId>tomcat7x</containerId>
  本地容器路径
      <home>D:\WorkSpace\apache-tomcat-7.0.64-maven</home>
        </container>
        <configuration>
  设置本地部署方式
      <type>standalone</type>
  设置本地部署目录
       <home>${project.build.directory}/tomcat7x</home>
  指定端口
       <properties>
                <cargo.servlet.port>8082</cargo.servlet.port>
            </properties>
        </configuration>
    </configuration>
</plugin>
使用mvn cargo:run 或者start发布并启动容器。

2.existing:用户需要指定现有的web容器目录,然后使用这些配置,将应用部署到其对应的位置。

<plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.6.6</version>
    <configuration>
        <container>
            <!--web容器的类型和版本,这个值插件有定义不是自定义的名字-->
            <containerId>tomcat7x</containerId>
            <!--本地容器路径-->
            <home>D:\WorkSpace\apache-tomcat-7.0.64-maven</home>
        </container>
        <configuration>
            <!--设置本地部署方式-->
            <type>existing</type>
            <!--设置本地部署目录-->
            <home>D:\WorkSpace\apache-tomcat-7.0.64-maven</home>
        </configuration>
    </configuration>
</plugin>
使用mvn cargo:run 或者start发布并启动容器。

部署至远程web容器

处理让cargo直接管理本地web容器然后部署应用之外,也可以用cargo部署应用至远程的正在运行的web容器中,前提是有该web容器的管理员权限。配置如下:

<plugin>
    <groupId>org.codehaus.cargo</groupId>
    <artifactId>cargo-maven2-plugin</artifactId>
    <version>1.6.6</version>
    <configuration>
        <container>
            <!--web容器的类型和版本,这个值插件有定义不是自定义的名字-->
            <containerId>tomcat7x</containerId>
            <type>remote</type>
        </container>
        <configuration>
            <!--设置远程部署方式-->
            <type>runtime</type>
            <properties>
                <cargo.remote.username>admin</cargo.remote.username>
                <cargo.remote.password>admin123</cargo.remote.password>
                <cargo.tomcat.manager.url>http://localhost:8080/manager</cargo.tomcat.manager.url>
            </properties>
        </configuration>
    </configuration>
</plugin>
使用命令:mvn cargo:redeploy 执行部署,使用这个功能需要配置tomcat用户、角色等信息。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值