JavaWeb学习的第二十天(Maven--项目管理工具)

一、Maven简介

1.什么是Maven?

Maven是apache下的开源项目,项目管理工具,管理java项目。
1、项目对象模型 (Project Object Model)
 	POM对象模型,每个maven工程中都有一个pom.xml文件,定义工程所依赖的jar包、本工程的坐标、打包运行方式。
2、依赖管理系统(基础核心 )
	maven通过坐标对项目工程所依赖的jar包统一规范管理。
3、maven定义一套项目生命周期
	清理、初始化、编译、测试、报告 、打包、部署、站点生成
4、一组标准集合
	强调:maven工程有自己标准的工程目录结构、定义坐标有标准。
5、maven 管理项目生命周期过程都是基于插件完成的

2.Maven仓库

1.本地仓库
	相当于缓存,工程第一次会从远程仓库(互联网)去下载jar 包,将jar包存在本地仓库(在程序员的电脑上)。第二次不需要从远程仓库去下载。先从本地仓库找,如果找不到才会去远程仓库找。
2.私服
	在公司内部架设一台私服,其它公司架设一台仓库,对外公开。
3.中央仓库
	就是远程仓库,仓库中jar由专业团队(maven团队)统一维护。
	中央仓库的地址:http://repo1.maven.org/maven2/
	中央仓库生成坐标的地址:http://repository.sonatype.org

二、Maven下载

1.可以到maven的官网下载 http://maven.apache.org/download.cgi


百度网盘下载地址

链接:https://pan.baidu.com/s/1xDaHIA2nALCbjpuz3W01IQ 
提取码:b9ku 
复制这段内容后打开百度网盘手机App,操作更方便哦

三、本地仓库配置

1.新建一个全英文,不包含空格的文件夹将apache-maven-3.3.9和repository_ssm(本地仓库)拷贝进去

注意:apache-maven-3.3.9解压之后就可以直接使用的
2.在你的maven安装目录\apache-maven-3.3.9\bin目录下输入cmd进入dos状态,然后输入mvn出现以下状态代表解压成功,可以使用了


3.如何将maven配置进环境变量中,以便在任意地方输入mvn都可以使用maven


4.配置本地仓库

打开maven的安装目录中conf/settings.xml文件,添加一行代码配置本地仓库
	<localRepository>D:\Maven\repository_ssm</localRepository>
这里的意思是配置本地仓库的目录为D:\Maven\repository_ssm


四、IDEA中配置Maven


配置以后创建项目不需要每次联网下载
-DarchetypeCatalog=internal

五、在IDEA中创建java项目

1.新建一个empty项目

3.在这个empty项目下新建modules

3.通过maven创建普通java项目





标准的java项目的目录结构



测试java项目是否可以正常运行

五、在IDEA中创建javaweb项目

1.在这个项目下新建modules

2.通过maven创建普通javaweb项目

接着一路next冲到底

标准的javaweb项目的目录结构


测试javaweb项目是否可以正常运行

//新建一个ServletDemo1
package com.bianyiit.web;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/servletDemo1")
public class ServletDemo1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("this is a javaweb project");
        response.getWriter().println("hello maven");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}





注意:maven是一个强大的jar包管理工具,我们不需要再项目中导入jar包,只需要在pom.xml通过坐标添加jar包的依赖即可

六、启动tomcat7插件的三种方式

方式一

方式二


方式三

七、Maven项目的生命周期


clean清理临时文件,删除target

compile编译项目

test测试项目


package打包项目


install安装项目

八、Maven项目的生命周期

1.依赖范围

1、compile 编译、测试、运行,A在编译时依赖B,并且在测试和运行时也依赖。
	strus-core、spring-beans
	打到war包或jar包。
2、provided 编译、和测试有效,A在编译和测试时需要B。
	比如:servlet-api就是编译和测试有用,在运行时不用(tomcat容器已提供)。
	不会打到war。
3、runtime:测试、运行有效。
	比如:jdbc驱动包 ,在开发代码中针对java的jdbc接口开发,编译不用。
	在运行和测试时需要通过jdbc驱动包(mysql驱动)连接数据库,需要的!!
	会打到war。
4、test:只是测试有效,只在单元测试类中用。
	比如:junit
	不会打到war。
如何设置依赖范围呢?
比如我们要将mysql驱动的依赖设置为runtime范围,配置如下:
 	<dependency>
  		<groupId>mysql</groupId>
  		<artifactId>mysql-connector-java</artifactId>
  		<version>5.1.6</version>
  		<scope>runtime</scope>
  	</dependency>
将servlet依赖设置为provided
  	<dependency>
  		<groupId>javax.servlet</groupId>
  		<artifactId>servlet-api</artifactId>
  		<version>2.5</version>
  		<scope>provided</scope>
  	</dependency>
如果是compile就不需要设置了,因为compile是scope的默认值。关于test范围我们在后边讲解单元测试时再做演示。
重新执行打包为war , 会发现servlet-api.jar已经不存在。

2.依赖传递

什么是依赖传递?
A->B(compile)     第一关系: a依赖b   compile
B->C(compile)      第二关系: b依赖c   compile
A  自动添加C的依赖

依赖调解第一原则:路径优先
依赖调解第二原则:声明优先

3.版本锁定

在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器。
	pom.xml文件中,jar的版本判断的两种途径
1.如果dependencies里的dependency自己没有声明version元素,那么maven就会倒dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明,如果有,就继承它,如果没有就会报错,告诉你必须为dependency声明一个version。
2.如果dependencies中的dependency声明了version,那么无论dependencyManagement中有无对该jar的version声明,都以dependency里的version为准。

4.排除依赖

5.变量定义

发布了73 篇原创文章 · 获赞 11 · 访问量 2430

猜你喜欢

转载自blog.csdn.net/weixin_43908333/article/details/103929796