欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-02-25 21:31:21
...

一、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仓库
JavaWeb学习的第二十天(Maven--项目管理工具)
JavaWeb学习的第二十天(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
JavaWeb学习的第二十天(Maven--项目管理工具)
JavaWeb学习的第二十天(Maven--项目管理工具)
百度网盘下载地址

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

三、本地仓库配置

1.新建一个全英文,不包含空格的文件夹将apache-maven-3.3.9和repository_ssm(本地仓库)拷贝进去
JavaWeb学习的第二十天(Maven--项目管理工具)
注意:apache-maven-3.3.9解压之后就可以直接使用的
2.在你的maven安装目录\apache-maven-3.3.9\bin目录下输入cmd进入dos状态,然后输入mvn出现以下状态代表解压成功,可以使用了
JavaWeb学习的第二十天(Maven--项目管理工具)
JavaWeb学习的第二十天(Maven--项目管理工具)
3.如何将maven配置进环境变量中,以便在任意地方输入mvn都可以使用maven
JavaWeb学习的第二十天(Maven--项目管理工具)
JavaWeb学习的第二十天(Maven--项目管理工具)
4.配置本地仓库

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

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

四、IDEA中配置Maven

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

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

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

五、在IDEA中创建java项目

1.新建一个empty项目
JavaWeb学习的第二十天(Maven--项目管理工具)
3.在这个empty项目下新建modules
JavaWeb学习的第二十天(Maven--项目管理工具)
3.通过maven创建普通java项目
JavaWeb学习的第二十天(Maven--项目管理工具)
JavaWeb学习的第二十天(Maven--项目管理工具)
JavaWeb学习的第二十天(Maven--项目管理工具)
JavaWeb学习的第二十天(Maven--项目管理工具)
JavaWeb学习的第二十天(Maven--项目管理工具)
标准的java项目的目录结构
JavaWeb学习的第二十天(Maven--项目管理工具)
JavaWeb学习的第二十天(Maven--项目管理工具)
JavaWeb学习的第二十天(Maven--项目管理工具)
测试java项目是否可以正常运行
JavaWeb学习的第二十天(Maven--项目管理工具)
JavaWeb学习的第二十天(Maven--项目管理工具)

五、在IDEA中创建javaweb项目

1.在这个项目下新建modules
JavaWeb学习的第二十天(Maven--项目管理工具)
2.通过maven创建普通javaweb项目
JavaWeb学习的第二十天(Maven--项目管理工具)
接着一路next冲到底
JavaWeb学习的第二十天(Maven--项目管理工具)
标准的javaweb项目的目录结构
JavaWeb学习的第二十天(Maven--项目管理工具)
JavaWeb学习的第二十天(Maven--项目管理工具)
测试javaweb项目是否可以正常运行
JavaWeb学习的第二十天(Maven--项目管理工具)
JavaWeb学习的第二十天(Maven--项目管理工具)

//新建一个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);
    }
}

JavaWeb学习的第二十天(Maven--项目管理工具)
JavaWeb学习的第二十天(Maven--项目管理工具)
JavaWeb学习的第二十天(Maven--项目管理工具)
JavaWeb学习的第二十天(Maven--项目管理工具)
注意:maven是一个强大的jar包管理工具,我们不需要再项目中导入jar包,只需要在pom.xml通过坐标添加jar包的依赖即可

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

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

七、Maven项目的生命周期

JavaWeb学习的第二十天(Maven--项目管理工具)
clean清理临时文件,删除target
JavaWeb学习的第二十天(Maven--项目管理工具)
compile编译项目
JavaWeb学习的第二十天(Maven--项目管理工具)
test测试项目
JavaWeb学习的第二十天(Maven--项目管理工具)
JavaWeb学习的第二十天(Maven--项目管理工具)
package打包项目
JavaWeb学习的第二十天(Maven--项目管理工具)
JavaWeb学习的第二十天(Maven--项目管理工具)
install安装项目

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

八、Maven项目的生命周期

1.依赖范围
JavaWeb学习的第二十天(Maven--项目管理工具)

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.排除依赖
JavaWeb学习的第二十天(Maven--项目管理工具)
5.变量定义
JavaWeb学习的第二十天(Maven--项目管理工具)

相关标签: Java修仙之路