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仓库
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.变量定义
下一篇: Python编程修改MP3文件名称的方法