`
suhuanzheng7784877
  • 浏览: 701418 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Ff8d036b-05a9-33b5-828a-2633bb68b7e6
读金庸故事,品程序人生
浏览量:47681
社区版块
存档分类
最新评论

Maven3实战笔记12Maven构建Web应用

阅读更多

1.  构建Web应用介绍

Java Web项目是我们最熟悉的项目类型了,一个Web项目的结构大家也是烂熟于心。之前咱们使用Maven构建的都是JavaSE类型的项目,虽然说Java Web项目可以借助类似于Eclipse这种IDE可以很好的帮助我们打包生成war,而且IDE可以集成Web服务器,联调也不麻烦。那如果说我在构建Web项目的同时又想跑一下全部的单元测试用例呢,又比如我的Web项目引用了很多已有的Maven私服上的jar包呢(比如就是Struts+Spring+Hibernate),再比如,我想看看此次Web项目构建过程中具体的报告信息等等,还是用Maven管理Java Web项目更为科学吧~当然了,笔者在这里绝不是让大家将所有的项目都迁移到Maven模式管理下,绝无此意,而是觉得在JavaSE上能体现Maven的优点同样适用于Java Web项目,虽然这种迁移会让您稍微改变一下以往的开发模式,但是个人认为从长期角度讲,对项目,对企业,对客户还是值得的。

2.  使用Maven构建Java Web项目

Java Web项目和别的项目不一样的地方主要在于2点,第一就是pom.xml文件中的构件类型,第二就是web资源(包括页面、web.xml、图片资源文件)。

pom.xml文件中需要指定打包类型为warpom.xml文件内容如下

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>MavenAccount-web</groupId>
	<artifactId>MavenAccount-web</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>MavenAccount-web</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>

 之后就是放置web文件的位置,Maven约定web文件放到src/main/webapp下面,用过MyEclipse的朋友们可能知道,开发web项目根目录下除了有src目录,都有一个叫做WebRoot的目录用于存储web资源的。

 webapp下面就是那个放置页面资源的文件夹。

下面就是src/main/java下一个简单的JavaBean的代码。

package MavenAccountweb;

/**
 * Hello world!
 */
public class App {

	public String sayWebHello(String str) {
		System.out.println(str);
		return "hello:" + str;
	}

}

 主页面入口index.jsp内容如下

<%@ page language="java" import="MavenAccountweb.App"
	pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title>Hello Web</title>
		<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	</head>

	<body>
		<%
			App app = new App();
			String newString = app.sayWebHello("liuyan");
		%>
		[<%=newString%>]
		<br>
	</body>
</html>

 它引用了业务JavaBean输出一段内容。

在项目根目录下运行maven脚本

mvn clean package

 之后看到目标输出目录出现如下内容

 
其中MavenAccount-web-0.0.1-SNAPSHOT.war,我们将其部署到本机的tomcat上运行。看到页面效果如下

 

Ok,证明你的Java Web项目构建成功。因为Java Web具体技术研发不在本次讨论的重点范围内,因此仅仅给出一个十分微小的Web项目。需要注意的是大家平时调试的时候完全可以使用IDE集成Web应用服务器,这是没有问题的,笔者看有些地方介绍了Maven插件——jetty-maven-plugin进行嵌入式的web调试,其实笔者认为大可不必,有IDE的时候其实使用此Maven插件感觉并不比使用IDE集成的Web服务器方便多少,而且各种Web服务器实现JSPServletJSF规范是不一样的,Tomcat自己的实现与Jetty就有很大差异,没准一个JSF项目在Tomcat下面运行得好好的,放到了Jetty下面就出现了不可预知的异常。所以还是是用IDE集成的Web服务器查看问题更方便一些。当然此处仅仅是笔者经验的一家之言,不同项目因情况而异。

Web项目中依赖SpringStruts等等第三方的包,和JavaSE的依赖配置一样。此处不必详说。而因为笔者调试阶段是使用IDE工具集成的Web服务器——Tomcat,所以不必在pom.xml中显示声明JSP-implServlet-impl等等Java Web规范的依赖项,Tomcat自身就是一个Java Web容器,自己有相关jar实现了此规范。(至于JavaEE规范详细请查看笔者Blog: http://suhuanzheng7784877.iteye.com/blog/908380

3.  总结

Web项目是我们搞Java研发人员中接触最多的,使用Maven配合MyEclipse这种IDE能让Web项目构建、升级第三方包、依赖第三方包更加简单、方便。也节省了很多查找Web依赖的时间。尤其是SSH项目,有时使用Spring需要依赖其他很多jar包,Maven会为您管理、下载这种间接依赖的。从此我们的Web开发显得构建简单了。当然可以参考其他文章看看使用Maven插件进行web项目热部署

http://www.huomo.cn/developer/article-196fd.html

http://article.yeeyan.org/view/jdonee/19631?from_com

此处就不细细道来了。

  • 大小: 37.2 KB
  • 大小: 16.5 KB
  • 大小: 25.3 KB
4
0
分享到:
评论
2 楼 suhuanzheng7784877 2011-06-14  
哥们儿,你看这样行不行,使用Hudson进行持续集成,你在Hudson配置你的web应用,让Huson定时去SVN库check代码,若发现SVN库源代码source code有变更,会自动下载,编译的。让你的web项目依赖于其他的Maven的jar项目,它会先编译依赖项目,依赖构建完成后再chack主web项目


http://www.docin.com/p-219804521.html

是关于hudson的介绍,持续集成。
1 楼 melin 2011-06-14  
maven多模块开发遇到一个比较大的问题。ts.ires.web是一个war工程,其它工程是jar工程。jar只要修改工程,就要mvn deploy。 非常麻烦,不知道你有什么好的办法。

/ts.ires.admin
/ts.ires.application
/ts.ires.collection
/ts.ires.core
/ts.ires.metadata
/ts.ires.monitor
/ts.ires.service
/ts.ires.share
/ts.ires.web

ts.ires.web工程的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>com.starit.resource</groupId>
		<artifactId>resource-parent</artifactId>
		<version>1.0.0-SNAPSHOT</version>
	</parent>

	<packaging>war</packaging>
	<artifactId>ts.ires.web</artifactId>
	<name>starit resource web</name>

	<dependencies>
 
		<dependency>
			<groupId>com.starit.resource</groupId>
			<artifactId>ts.ires.core</artifactId>
			<version>${parent.version}</version>
		</dependency>
		
		<dependency>
			<groupId>com.starit.resource</groupId>
			<artifactId>ts.ires.admin</artifactId>
			<version>${parent.version}</version>
		</dependency>
		
		<dependency>
			<groupId>com.starit.resource</groupId>
			<artifactId>ts.ires.application</artifactId>
			<version>${parent.version}</version>
		</dependency>
		
		<dependency>
			<groupId>com.starit.resource</groupId>
			<artifactId>ts.ires.collection</artifactId>
			<version>${parent.version}</version>
		</dependency>
		
		<dependency>
			<groupId>com.starit.resource</groupId>
			<artifactId>ts.ires.metadata</artifactId>
			<version>${parent.version}</version>
		</dependency>
		
		<dependency>
			<groupId>com.starit.resource</groupId>
			<artifactId>ts.ires.monitor</artifactId>
			<version>${parent.version}</version>
		</dependency>
		
		<dependency>
			<groupId>com.starit.resource</groupId>
			<artifactId>ts.ires.service</artifactId>
			<version>${parent.version}</version>
		</dependency>
		
		<dependency>
			<groupId>com.starit.resource</groupId>
			<artifactId>ts.ires.share</artifactId>
			<version>${parent.version}</version>
		</dependency>

	</dependencies>
	
	<build>
		<plugins>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>tomcat-maven-plugin</artifactId>
				<configuration>
					<server>myserver</server>
					<path>/resource</path>
				</configuration>
			</plugin>

			<plugin>
				<groupId>org.mortbay.jetty</groupId>
				<artifactId>jetty-maven-plugin</artifactId>
				<version>7.2.2.v20101205</version>
				<configuration>
					<webAppConfig>
						<contextPath>/resource</contextPath>
					</webAppConfig>
					<!--<scanIntervalSeconds>3</scanIntervalSeconds>-->
					<connectors>
						<connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector">
							<port>8080</port>
							<maxIdleTime>30000</maxIdleTime>
						</connector>
					</connectors>
					<webAppSourceDirectory>src/main/webapp</webAppSourceDirectory>
				</configuration>
			</plugin>

		</plugins>
	</build>
</project>

相关推荐

    Maven3实战笔记(全)

    《Maven3实战笔记(全)》是一本全面深入介绍Maven3的实践指南,由一位具有独特风格的作者撰写,以其风趣幽默的方式解析了Maven3的各种核心概念和使用技巧。这本书涵盖了从Maven的基础安装与配置,到复杂的仓库依赖...

    Maven3实战笔记

    **Maven3实战笔记概述** Maven3是Apache软件基金会开发的一款项目管理和综合工具,它主要解决了Java项目构建过程中的依赖管理和项目信息管理问题。在Java开发领域,Maven3以其标准化的构建流程、强大的依赖管理和...

    Maven3实战笔记02项目需求和模块分析

    ### Maven3实战笔记02:项目需求和模块分析 在Maven3的实战学习中,第二部分着重于项目需求分析与模块划分,这是构建大型、复杂项目时的基础工作,能够帮助开发者更好地理解项目架构,合理分配资源,提高开发效率。...

    maven笔记:maven-overlay-实战笔记

    【标题】:“maven笔记:maven-overlay-实战笔记” 在 Maven 的世界里,"overlay" 是一个重要的概念,主要用于Web项目的构建和部署。Maven overlay 技术允许你将多个项目的输出“重叠”在一起,形成一个新的项目,...

    Maven3实战笔记01环境配置与使用入门

    通过以上介绍,我们可以看到Maven3为Java开发提供了强大的支持,简化了项目的构建和管理流程。学习和掌握Maven,对于提升开发效率和团队协作具有重要意义。在实际应用中,还需要不断探索和实践,以充分发挥Maven的...

    很实用很实用的maven实战笔记

    ### Maven 实战笔记详解 #### 一、Maven 基础配置与安装 Maven 是一款非常流行的 Java 项目构建工具,它可以帮助开发者自动管理项目的依赖关系,并且提供了标准化的构建过程。本文将详细介绍如何在本地环境中安装...

    maven从入门到实战

    本文首先针对maven3.3.3 的版本构建普通Java 应用和Java Web 应用进行讲解。然后针对公司私有maven 库的情况下,如何安装自有资源及在maven 应用中使用私有maven 库中的资源进行说明。接下来针对maven 与配置管理...

    达内Java项目云笔记12天完整源码cloudnote_day12_all.zip

    在"达内Java项目云笔记12天完整源码cloudnote_day12_all.zip"这个压缩包中,我们可以深入探索一个基于Java开发的云笔记应用程序。该项目提供了从零到一的学习路径,涵盖了12天的学习内容,旨在帮助开发者全面掌握...

    Java Web框架技术笔记

    4. **Spring MVC实战**:Spring MVC是Spring框架的一部分,用于构建Web应用程序,提供模型-视图-控制器架构,支持RESTful风格的路由。 5. **数据访问**:课程还涵盖了Spring使用JDBC直接操作数据库,以及与MyBatis...

    java学习笔记(包含web开发技术的原理配置)

    Java学习笔记是一个全面涵盖Java基础知识和Web开发技术的资源,非常适合初学者和进阶者深入理解这门语言及其在Web开发中的应用。这份文档可能包含了从语法基础到高级特性的详细讲解,以及如何将Java应用于Web环境的...

    在线商城项目实战视频教程 包含:源码+笔记+视频

    接着是SpringMVC,它是Spring框架的一部分,专为构建Web应用程序而设计。SpringMVC通过Model-View-Controller(MVC)模式分离业务逻辑、用户界面和数据访问层,使得代码结构清晰,易于维护。在在线商城项目中,...

    四个SSH框架实战项目源码加尚学堂课件笔记

    4. **实战项目源码**:这些源码通常包括了完整的Maven或Gradle构建文件,以及各个模块的实现,如DAO层、Service层、Controller层等。通过阅读和分析源码,学习者可以理解SSH框架如何在实际项目中协作工作,提升对...

    javaWeb学习笔记

    12. **前端技术**:HTML、CSS和JavaScript是构建Web界面的基本技术,理解DOM操作、AJAX异步请求、jQuery库等有助于前后端交互。 13. **版本控制**:如Git,用于团队协作和代码版本管理。 这些知识点构成了一个完整...

    MyBatis Plus全套学习资料(带源码和笔记)

    配套的学习笔记通常会包含作者在学习过程中遇到的问题及解决方案,实战案例解析,有助于快速掌握MyBatis Plus的使用技巧和最佳实践。 总之,MyBatis Plus是提升开发效率的利器,这套学习资料能够帮助开发者系统性地...

    ssh_web开发测试程序学习笔记

    SSH(Struts2 + Spring + Hibernate)是一种经典的Java Web开发框架,用于构建高效、可维护的Web应用程序。这个“ssh_web开发测试程序学习笔记”涵盖了使用这三个框架进行Web开发和测试的基本概念、步骤和最佳实践。...

    学习笔记x20200529.zip

    12. **实战项目**:可能包含一个或多个示例项目,展示了从零开始构建一个完整的Spring Boot应用的全过程。 这份笔记不仅适合初学者,也对有一定经验的开发者有很高的参考价值。通过学习,读者将能够熟练地使用...

    springboot学习笔记(史上最全)

    1. **起步依赖(Starters)**:SpringBoot通过提供一系列的起步依赖,使得在项目构建时可以方便地引入所需的功能模块,如Web、DataJPA、Security等。 2. **自动配置(Auto Configuration)**:根据项目类路径中的...

    javaweb项目实战

    这个实战项目包含了丰富的笔记和详细的实现步骤,确保学习者能够步步为营,逐步建立起自己的Web应用程序。以下是对JavaWeb相关知识点的详细阐述: 1. **Java基础**:JavaWeb开发基于Java编程语言,因此,熟悉Java的...

    达内java笔记,精挑细选(达内助教整理)

    - **实战篇**:基于Maven的项目构建、使用Tomcat服务器部署应用、数据库设计与SQL操作、RESTful API设计等。 - **面试指南**:常见面试题解析,包括Java基础、J2EE框架、设计模式等。 这份笔记是学习J2EE的宝贵资源...

    《IT学习资料》-SSM实战项目-Java高并发秒杀API,详细流程+学习笔记.zip

    《IT学习资料》-SSM实战项目-Java高并发秒杀API是一份全面的教程,旨在帮助学习者掌握如何在Java环境下使用Spring、SpringMVC和MyBatis(简称SSM)框架构建高并发的秒杀系统。这个项目涵盖了从项目初始化到实现完整...

Global site tag (gtag.js) - Google Analytics