`
leonzhx
  • 浏览: 769837 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

第十二章 使用Maven构建Web应用

阅读更多

1.   Web 项目的 POM 中需要显示地指定打包方式为 war ,其默认的 web 资源目录为 src/main/webapp/ ,在该目录下必须包含 WEB-INF/web.xml

 

2.   Maven 属性 ${project.groupId} ${project.version} 分别代表了当前 POM 的项目的 groupId version

 

3.   javax.servlet.servlet-api javax.servlet.jsp.jsp-api 这两个构建基本上所有 Web 项目都会依赖它们,但它们的依赖范围应该是 provided ,表示它们最终不会被打包到 war 文件中,这是因为几乎所有 Web 容器都会提供这两个类库。

 

4.   超级 POM 中定义了 fileName 元素(在 project 元素下)的默认值为 ${project.artifactId}-${project.version} ,该元素用来标识项目生成的主构件的名称。但为了在访问 web 项目页面的时候不输入冗长的地址,我们会配置 fileName 元素为项目生成更为简洁的 war 包名。

 

5.   web.xml 中:

<web-app>

  …

  <listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

  </listener>

  <context-param>

    <param-name>contextConfigLocation</param-name>

    <param-value>

      classpath://account-persist.xml

      classpath://account-captcha.xml

      classpath://account-email.xml

      classpath://account-service.xml

    </param-value>

  </context-param>

  …

</web-app>

 

ContextLoaderListener 用来为 Web 项目启动 Spring IoC 容器,从而实现 Bean 的注入。 contextConfigLocation 设定了 Spring 配置文件的位置。

 

 

6.   jetty-maven-plugin 能够周期性地检查 Web 项目内容,发现编译后的文件变化后自动更新到内置的 Jetty Web 容器中。可以在 POM 文件中配置 jetty-maven-plugin :

<plugin>

  <groupId>org.mortbay.jetty</groupId>

  <artifactId>jetty-maven-plugin</artifactId>

  <version>7.1.6.v20100715</version>

  <configuration>

    <scanIntervalSeconds>10</scanIntervalSeconds>

    <webAppConfig>

      <contextPath>/test</contextPath>

    </webAppConfig>

  </configuration>

</plugin>
 

scanIntervalSeconds 的默认值为 0 ,也就是不扫描。配置 settings.xml

 

<settings>

  <pluginGroups>

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

  </pluginGrous>

</settings> 
 

这样就可以使用简化的命令行调用:

mvn jetty:run –Djetty.port=9999

端口默认是 8080 。详细资料可以参考

http://wiki.eclipse.org/Jetty/Feature/Jetty_Maven_Plugin

 

7.  C argo 是一组帮助用户操作 Web 容器的工具,它能够帮助用户实现自动化部署,而且它几乎支持所有的 Web 容器,如 Tomcat JBoss Jetty Glassfish 等。

 

8.  C argo 支持两种本地部署的模式: standalone existing 。在 standalone 模式中, Cargo 会从 Web 容器的安装目录复制一份配置到用户指定的目录,然后在此基础上部署应用,每次重新构建的时候,这个目录都会被清空,所有配置被重新生成。而在 existing 模式中,用户需要指定现有的 Web 容器配置目录,然后 Cargo 会直接使用这些配置并将应用部署到其对应的位置。

 

9.

<plugin>

  <groupId>org.codehaus.cargo</groupId>

  <artifactId>cargo-maven2-plugin</artifactId>

  <version>1.0</version>

  <configuration>

    <container>

      <containerId>tomcat6x</containerId>

      <home>D:\cmd\apache-tomcat-6.0.29</home>

    </container>

     <configuration>

       <type>standalone</type>

      <home>${project.build.directory}/tomcat6x</home>

      <properties>

        <cargo.servlet.port>8081</cargo.servlet.port>

      </properties>

    </configuration>

  </configuration>

</plugin> 
 

configuration 元素的 home 子元素表示复制容器配置到什么位置,这里的值 ${project.build.directory} 表示构建输出目录,即 target/ container 元素下的 containerId 表示容器的类型。 Cargo 默认会让 Web 容器监听 8080 端口。要使用 existing 模式只需更改 configuration 元素:

<configuration>

  <type>existing</type>

  <home> D:\cmd\apache-tomcat-6.0.29</home>

</configuration> 
 

这里 home 子元素表示现有的 Web 容器目录。运行 mvn cargo:start 之后就会在 Tomcat webapps 子目录下看到被部署的 web 项目。

 

10.  对 于远程部署, container 元素的 type 子元素值必须为 remote (默认值为 installed )。 configuration 元素的 type 子元素值为 runtime ,表示既不使用独立的容器配置,也不使用本地现有的容器配置,而是依赖一个已运行的容器。 Properties 元素用来声明一些容器热部署相关的配置,可以参考: http://cargo.codehaus.org/Maven2+plugin

运行 mvn cargo:redeploy 就能重新部署 web 项目了。

分享到:
评论

相关推荐

    Maven实战(高清版)

    背景案例第5章 坐标和依赖第6章 仓库第7章 生命周期和插件第8章 聚合与继承第9章 使用nexus创建私服第10章 使用maven进行测试第11章 使用hudson进行持续集成第12章 使用maven构建web应用第13章 版本管理第...

    maven window下安装包

    第12章:编写自定义插件/12.4 使用自定义插件/12.4.1 在新建的Maven项目中引用自定义插件 第12章:编写自定义插件/12.4 使用自定义插件/12.4.2 测试自定义插件 第12章:编写自定义插件/12.4 使用自定义插件/12.4.3 ...

    Maven+Hibernate+Spring+Spring MVC开发新闻发布系统

    课程介绍 一、课程用到的软件: 1、jdk 1.8 2、eclipse neon 3、tomcat 8 4、jetty 5、MySQL 6、navicat 9+ 二、课程涉及到的技术点 ...2、熟练掌握Maven基础应用 ...第12课 使用Maven管理新闻系统开发-项目完善

    Maven权威指南 很精典的学习教程,比ANT更好用

    Maven权威指南 Authors Tim O'Brien (Sonatype, Inc.) , John Casey (Sonatype, Inc.) , Brian Fox (Sonatype, Inc.) , Bruce Snyder () , Jason Van Zyl (Sonatype, Inc.) , Juven Xu () Abstract Maven权威指南...

    尚硅谷Java视频教程_Maven视频

    第二个Maven工程的目录结构和文件内容 · 16.依赖的基本操作 · 17.依赖的范围初步介绍 · 18.生命周期插件和目标 · 19.Maven插件的设置 · 20.创建Maven版Java工程 · 21.在Eclipse中执行Maven命令 · 22....

    基于SSH2+Maven+EasyUI+MySQL技术实战开发易买网电子商务交易平台

    由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目,而使用 Ant 则需要十几行。事实上,由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,...

    通向架构师的道路

    (第十二天)之Axis2 Web Service(三) (第十三天)Axis2 Web Service安全初步 (第十四天)Axis2 Web Service安全之rampart (第十五天)IBM Websphere的安装与优化 (第十六天)IBM Websphere与IBM HttpServer的...

    通向架构师的道路(第1-20天)

    (第十二天)之Axis2 Web Service(三) (第十三天)Axis2 Web Service安全初步 (第十四天)Axis2 Web Service安全之rampart (第十五天)IBM Websphere的安装与优化 (第十六天)IBM Websphere与IBM HttpServer的...

    javaee:java ee 项目的第一个 goncel 章

    开始 Java EE 7本书的结构第 1 部分 - 介绍第 1 章 - Java EE 7 环境第 2 节 - 交叉关注第 2 章 - 上...13 章 - 消息第 14 章 - SOAP Web 服务第 15 章 - RESTful Web 服务代码和 Maven 模块的结构书中使用的代码定义在

    jBPM5 用户指南-中文

    第十二章 Human Tasks 81 12.1 流程内的Human tasks 81 12.1.1 Swimlanes 84 12.2 Human task 管理组件 84 12.2.1 任务生命周期 84 12.2.2 将任务组件链接到jBPM引擎 85 12.2.3 启动任务管理组件 87 12.2.4 和任务...

    JBPM5 用户指南

    第十二章 Human Tasks 75 12.1 流程内的Human tasks 75 12.1.1 Swimlanes 78 12.2 Human task 管理组件 78 12.2.1 任务生命周期 78 12.2.2 将任务组件链接到jBPM引擎 79 12.2.3 启动任务管理组件 81 12.2.4 和任务...

    JBPM5权威指南

    第十二章 Human Tasks 75 12.1 流程内的Human tasks 75 12.1.1 Swimlanes 78 12.2 Human task 管理组件 78 12.2.1 任务生命周期 78 12.2.2 将任务组件链接到jBPM引擎 79 12.2.3 启动任务管理组件 81 12.2.4 和任务...

    Spring in Action(第二版 中文高清版).part2

    第12章 访问企业服务 12.1 从JNDI中获取对象 12.1.1 使用传统的JNDI 12.1.2 注入JNDI对象 12.1.3 在Spring 2中注入JNDI对象 12.2 发送电子邮件 12.2.1 配置邮件发送器 12.2.2 构建电子邮件 12.3 调度任务 ...

    Spring in Action(第二版 中文高清版).part1

    第12章 访问企业服务 12.1 从JNDI中获取对象 12.1.1 使用传统的JNDI 12.1.2 注入JNDI对象 12.1.3 在Spring 2中注入JNDI对象 12.2 发送电子邮件 12.2.1 配置邮件发送器 12.2.2 构建电子邮件 12.3 调度任务 ...

    Spring in Action(第2版)中文版

    第12章访问企业服务 12.1从jndi中获取对象 12.1.1使用传统的jndi 12.1.2注入jndi对象 12.1.3在spring2中注入jndi对象 12.2发送电子邮件 12.2.1配置邮件发送器 12.2.2构建电子邮件 12.3调度任务 12.3.1使用...

    agorava-socializer:使用Agorava构建的示例应用程序

    欢迎来到Agorava Socializer Socializer是Agorava的演示Web应用程序。 它使您可以连接到各种社交媒体,并查看时间表和发布更新。跑步Socializer带有Jetty配置,因此您可以直接从maven启动webapp。 您所要做的就是...

    springboot参考指南

    创建一个非web(non-web)应用 ii. 63. 属性&配置 i. 63.1. 外部化SpringApplication配置 ii. 63.2. 改变应用程序外部配置文件的位置 iii. 63.3. 使用'short'命令行参数 iv. 63.4. 使用YAML配置外部属性 v. 63.5. ...

    阿里分布式开源框架DUBBO视频-dubbo入门.zip

    第07节--使用maven构建dubbo服务的可执行jar包 第08节--在linux操作系统上手工部署dubbo服务 第09节--构建dubbo服务消费者web应用的war包并在tomcat中部署 第10节--dubbo监控中心的介绍与简易监控中心的安装 第11节...

Global site tag (gtag.js) - Google Analytics