`
leonzhx
  • 浏览: 793607 次
  • 性别: 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构建Spring工程.docx

    "通向架构师的道路(第十九天)使用maven构建Spring工程" 今天,我们将探讨使用Maven构建Spring工程的道路。Maven是一个自动依赖管理工具,可以帮助我们解决jar包依赖问题,并且使我们的项目变得更加简洁和高效。 ...

    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的Spring+SpringMVC+Mybatis的环境搭建.pdf

    本部分文档详细介绍了如何利用Maven工具搭建一个基于Spring框架、SpringMVC和Mybatis的Java Web应用程序的开发环境。以下是对所给文件内容的知识点详尽阐述: 1. 开发环境需求: - 开发工具:Eclipse IDE,一个...

    maven的入门使用

    #### 二、Maven 创建 Web 项目 **1. 创建 Maven Web 项目** - 使用命令行或 Eclipse 创建 Maven Web 项目。 - 在命令行中可以使用 `mvn archetype:generate` 命令,结合 webapp archetype 来创建 Web 项目。 - ...

    maven实例源码

    本实例源码是基于《maven实战》一书的第12章内容,涵盖了多个模块,旨在帮助读者深入理解和应用Maven的实际开发场景。 首先,我们关注的是"account-parent"这个文件名。在Maven中,"parent"通常用于定义共用的POM...

    maven3.0.4学习教程

    在IDE中(如Eclipse)新建Maven项目,可以选择不同的项目类型,如Java应用程序或Web应用程序,并指定项目的`groupId`、`artifactId`和`version`等基本信息。 ##### 2.4 Maven目录结构说明 Maven项目遵循一套标准的...

    从零开始学java web

    第十二章:MyBatis框架 MyBatis是一个轻量级的持久层框架,结合SQL语句,使数据库操作更加灵活。本章会介绍MyBatis的使用和配置。 第十三章:Ajax与JSON Ajax(异步JavaScript和XML)允许页面在不刷新的情况下与...

    maven 环境搭建

    在首次使用 Maven 时,Eclipse 会自动构建 Maven 索引,这个过程可能需要几分钟的时间。也可以手动触发索引构建过程,在 Eclipse 的 Maven 视图中右键点击索引条目,选择 “Rebuild Index”。 #### 八、创建简单的 ...

    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权威指南...

    [SSH+Maven+Bootstrap视频教程]_第 四十二 讲.zip

    在本节 "[SSH+Maven+Bootstrap视频教程]_第 四十二 讲" 中,我们将深入探讨如何在Java开发环境中整合Spring、Struts和Hibernate(SSH)框架,并结合Maven进行项目管理,以及利用Bootstrap进行前端美化。这些技术都是...

    JAVA WEB开发源码

    12. **第十二章:AJAX** - 阐述异步JavaScript和XML技术,如何实现页面无刷新更新。 13. **第十三章:JSON** - JSON是一种轻量级的数据交换格式,讲解如何在Java中解析和生成JSON。 14. **第十四章:RESTful Web...

    Java Web开发实战宝典第12章

    在《Java Web开发实战宝典》的第12章中,王国辉等作者深入探讨了Java Web应用程序的构建和实现。这一章涵盖了多个关键知识点,包括但不限于Servlet、JSP、MVC模式、数据库交互以及Web应用程序的组织结构。以下是根据...

    java开发maven命令详解

    这对于Web应用特别有用,因为它允许开发者在本地快速测试应用而无需手动部署。 #### 5. `mvn compile` 编译项目中的源代码。这是构建过程中最基础的一步,通常在其他命令之前被执行。 #### 6. `mvn test` 运行...

    maven命令指南

    Maven的项目初始化是构建流程的第一步,它通过`archetype:create`命令基于预设的模板创建项目结构。例如: ``` mvn archetype:create -DgroupId=packageName -DartifactId=projectName ``` 此命令会创建一个具有...

    [SSH+Maven+Bootstrap视频教程]_第 二十一 讲.zip

    总结而言,本视频教程的第二十一讲涵盖了SSH框架与Maven的整合,Spring AOP的应用以及日志拦截器的实现,这些都是Java Web开发中的重要概念和技术。通过学习这些内容,开发者能够更高效地管理项目,增强代码的可维护...

    [SSH+Maven+Bootstrap视频教程]_第 五十二 讲.zip

    在本节 "[SSH+Maven+Bootstrap视频教程]_第 五十二 讲" 中,我们将深入探讨如何集成Spring、Struts2和Hibernate(SSH)框架,并结合Maven项目管理和Bootstrap前端框架,来构建高效、现代化的企业级Java Web应用程序...

Global site tag (gtag.js) - Google Analytics