maven工具的使用
目的:用于简化大型项目的开发
一、基本概念
maven翻译为”专家“、”内行“。Maven是Apache下的一个纯java开发的开源项目,它是一个项目管理工具,使用maven对java项目进行构建、依赖管理。当前使用Maven的项目在持续增长。
分析:maven项目为什么那么小?
答:因为没有jar包
maven需要jar包吗?
答:需要,jar包存在于
1、什么是项目构建
项目构建是一个项目从编写源代码到翻译、测试、运行、打包、部署、运行的过程。
(1)传统项目构建过程
传统的使用eclipse构建项目的过程如下:

构建过程如下:
- 在eclipse中创建一个java web 工程。
- 在工程中编写源代码及配置文件等。
- 对源代码进行编译,java文件编译成class文件
- 执行Junit单元测试
- 将工程打包成war包部署至tomcat运行
(2)maven项目构建过程
maven将项目构建的过程进行标准化,每一个阶段使用一个命令完成,下图展示了构建过程的一些阶段,后面章节详细介绍每个阶段,这里先大概了解一下:

(3)maven项目的依赖管理
maven项目管理所依赖的jar包不需要手动向工程添加jar包,只需要在pom.xml(maven工程的配置文件)添加jar包的坐标,自动从maven仓库中下载jar包,运行,如下图:

优点:
1、通过pom.xml文件对jar包的版本进行统一管理,可以避免版本的冲突。
2、maven团队维护了一个非常全的maven仓库,里边包括了当前使用的jar包,maven工程可以自动从maven仓库下载jar包,非常方便。
(3)使用maven的好处

二、maven安装与配置
1、下载


2、环境变量的配置


3、maven仓库


(1)本地仓库的配置(需要先把本地仓库放在用户目录下的.m2下【自己配】,如:D:\javaee\MavenRepository\.m2)


三、演示入门程序
1、Maven的目录结构


2、Maven的常用命令
Clean 清理编译的文件

Compile 编译了主目录的文件

Test 编译并运行了test目录的代码

Package 打包

Install 就是把项目发布到本地仓库

Tomcat:run 一键启动
3、Maven生命周期(了解即可)
Compile test package install deploy(发布到私服)
三种生命周期
Clean生命周期
Clean
Default生命周期
Compile test package install deploy
Site生命周期
Site
4、命令和生命周期的阶段的关系
不同的生命周期的命令可以同时执行
Mvn clean package
四、项目构建
M2e插件的安装
Maven在eclipse的配置
1、选择3.3.9版本的Maven软件

2、修改默认的本地仓库地址

3、项目构建
1、新建项目

2、调过骨架,如果不跳过骨架选择创建出的项目目录是不全的

3、填写坐标

4、创建工程

5、处理红色的叉号
手动在webapp文件夹下创建一个WEB-INF文件夹,在里面放一个web.xml文件

6、处理编译版本
在pom.xml中添加如下代码:
1 <build> 2 <!-- 配置了很多插件 --> 3 <plugins> 4 <plugin> 5 <groupId>org.apache.maven.plugins</groupId> 6 <artifactId>maven-compiler-plugin</artifactId> 7 <version>3.5.1</version> 8 <configuration> 9 <source>1.7</source> 10 <target>1.7</target> 11 <encoding>UTF-8</encoding> 12 </configuration> 13 </plugin> 14 </plugins> 15 </build>
7、创建一个Servlet

修改web.xml
删除重复的代码
xmlns=http://java.sun.com/xml/ns/javaee

添加jar包
在pom中添加如下代码:
1 <dependencies> 2 <dependency> 3 <groupId>junit</groupId> 4 <artifactId>junit</artifactId> 5 <version>4.9</version> 6 <scope>test</scope> 7 </dependency> 8 <dependency> 9 <groupId>javax.servlet</groupId> 10 <artifactId>servlet-api</artifactId> 11 <version>2.5</version> 12 <scope>provided</scope> 13 </dependency> 14 <dependency> 15 <groupId>javax.servlet</groupId> 16 <artifactId>jsp-api</artifactId> 17 <version>2.0</version> 18 <scope>provided</scope> 19 </dependency> 20 21 </dependencies>
会发现jar包已添加到项目中

启动项目
右击项目---run as –maven build ….

五、依赖管理
Jar包的管理
需求:整合struts2 页面上传一个客户id 跳转页面
Jar包的管理
1、添加依赖
打开maven仓库的视图:

2、重建索引

1、 创建maven项目(同上)
2、 跳过骨架(同上)
3、 填写坐标信息(同上)
4、 添加web.xml文件(同上)
5、 修改编译版本(同上)
6、 添加坐标 选择Dependencies标签 点击add

1、 手动输入要添加的坐标,选择版本

1、 可以看到 pom.xml文件中多出了如下代码

9、 同样的方式添加servlet-api.jar和jsp-api.jar 注意选择scope为provided
10、 写action代码
1 import com.opensymphony.xwork2.ActionSupport; 2 public class CutomerAction extends ActionSupport { 3 private Long custId; 4 public Long getCustId() { 5 return custId; 6 } 7 public void setCustId(Long custId) { 8 this.custId = custId; 9 } 10 public String findById(){ 11 12 return SUCCESS; 13 } 14 15 }
11、 添加struts.xml文件放到resources目录中

内容:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4 "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 6 <struts> 7 <!-- 配置常量 --> 8 <!-- 字符集 --> 9 <constant name="struts.i18n.encoding" value="UTF-8"></constant> 10 <!-- 开发模式 --> 11 <constant name="struts.devMode" value="true"></constant> 12 13 <!-- 通用package --> 14 <package name="customer" namespace="/" extends="struts-default"> 15 16 <action name="find" class="cn.itcast.action.CutomerAction" 17 method="findById"> 18 <result name="success">/jsp/info.jsp</result> 19 </action> 20 21 </package> 22 </struts>
12、添加jsp页面

13、修改web.xml文件,添加过滤器
1 <filter> 2 <filter-name>struts2</filter-name> 3 <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 4 </filter> 5 <filter-mapping> 6 <filter-name>struts2</filter-name> 7 <url-pattern>/*</url-pattern> 8 </filter-mapping>
六、maven的三种打包方式
行家中的三种工程:
1.pom工程:用在父级工程或聚合工程中用来做罐子包的版本控制。
2.war工程:将会打包成战争,发布在服务器上的工程如网站或服务。
3.jar工程:将会打包成JAR用作JAR包使用。
以淘淘商城为例:

1、POM工程
(1) taotao-parent:
涛涛父母是整个项目的父工程,它是一个POM工程。用来做整个项目的版本控制,也就是项目中所有要使用到的JAR包的版本都集中由父工程管理。这样你在写其他工程POM文件中的Maven依赖时就不需要写版本号了。当然所有的项目都要先继承它才行。
(2)taotao经理:
创建taotao-manager用来做聚合工程,它也是一个pom工程。创建四个模型分别是taotao-manager-pojo,taotao-manager-dao,taotao-manager-service,taotao-manager-web,同时会自动生成4个独立的行家工程。聚合工程只是用来帮助其他模块构建的工具,本身并没有实质的内容。具体每个工程代码的编写还是在生成的工程中去写。
使用聚合工程涛涛经理的意义就是:原本这些模块也是一个个独立的工程,现在将它们聚合到涛涛经理中,这样我们构建项目的时候就只要构建涛涛经理一个就行了我们只要使用maven构建这个聚合工程taotao-manager就行了而不用去操作模块的构建,比如安装时只要安装taotao-manager就行。总之就是简化操作。正常的编码工作还是在对应的taotao-manager-pojo,taotao-经理-道,涛涛经理服务,涛涛经理的Web。工程中进行的。
2、战争工程
(1)taotao休息,涛涛的门户网站这些
这些工程都是要部署在服务器上的,所以要打包成战争形式。这些工程有的是用户通过浏览器直接访问,有的是通过发布服务被别的工程调用。
三的.jar工程
(2)taotao常见
这个就是打包成JAR的工程。它就是存放一些其他工程都会使用的类,工具类,我们可以在其他工程的POM文件中去引用它,和引用别的坛子包没什么区别。
<依赖性>
<的groupId> com.taotao </的groupId>
<artifactId的>涛涛共用</ artifactId的>
<版本> 0.0.1-SNAPSHOT </版本>
</依赖性>

浙公网安备 33010602011771号