Maven是什么?
Maven 是一个项目管理工具
为什么使用Maven?
能帮你构建工程,管理 jar包,不需要每个项目都放重复的jar包;编译代码,还能帮你自动运行单元测试,不需要自己单元测试代码;打包,生成报表,甚至能帮你部署项目,生成 Web 站点。
2、Maven依赖管理
上面是依赖管理?
依赖管理是Maven的主要核心功能:Maven对jar包管理的过程
3、Maven一键部署
怎么一键部署?
这时候项目自动运行了。
而且还提供了资源访问url
- pom.xml是存储jar包坐标的。
04、Maven安装
- 1-把解压包放在没有中文没有空格的目录即可。
- 2、配置环境变量
- 3-编辑Path
注意:maven环境变量依赖于Java_HOME,所以这个要存在。
测试配置环境变量好了么有:
5、仓库种类&彼此关系
jar包仓库有3类:本地仓库、远程仓库、中央仓库
本地仓库是指Maven安装之后,会默认创建个本地仓库来装jar包,但是刚安装完Maven肯定是没有jar包的,而在联网的情况下,当Maven项目使用本地仓库时没有jar包,就会去中央仓库下载(好几G,涵盖几乎所有jar包)。一般公司内都会有专门的远程仓库(又称,私服),利用内网来给本地仓库上传(因为不需要全部jar,为了效率),一部分可能来自中央仓库。
图示:
怎么修改本地仓库的路径?
- 1、找到Maven目录下的
conf/settings.xml
- 2、修改添加此处:
6、Maven标准目录结构
7、Maven常用命令
- 1、compile
compile 是 maven 工程的编译命令,作用是将 src/main/java 下的文件编译为 class 文件输出到 target目录下。
- 2、test
test 是 maven 工程的测试命令 mvn test,会执行 src/test/java 下的单元测试类。cmd 执行 mvn test 执行 src/test/java 下单元测试类
- 3、clean
clean 是 maven 工程的清理命令,执行 clean 会删除 target 目录及内容。
- 4、package
package 是 maven 工程的打包命令,对于 java 工程执行 package 打成 jar 包,对于 web 工程打成 war
包。
- 5、install
install 是 maven 工程的安装命令,执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库。
从运行结果中,可以看出:
当后面的命令执行时,前面的操作过程也都会自动执行,
执行步骤具有包含关系:
8、Maven生命周期
clean的作用:
【一般一键部署的时候,都要清除编译文件做准备。】
有时候,项目的代码是分工写的,你集合别人的代码来部署,部署之前必须先清楚别人编译好的target文件,因为毕竟每个人的开发环境不同。
deploy发布:
编译到安装可以直接使用命令进行操作,而发布命令操作之前需要配置一些文件。
9、Maven概念模型图
10、IDEA集成Maven插件
11、用骨架创建Maven的Java工程
【querystart模板】
需要在main目录下补resourse(还有右键设置为Resourse root)
12、不用骨架创建Maven的Java工程
建议不使用模板创建
13、用骨架创建Maven的Web工程
【webapp模板】
需要在main目录下补java(还有右键设置为sourse root)
14、maven工程servlet实例之指定web资源包
使文件变成web资源包,变成web资源可以创建JSP等等文件。
15、maven工程servlet实例之导入项目依赖的jar包
-
1、配置web.xml
配置了什么?
1、资源名
2、虚拟目录。(“/”代表无虚拟目录) -
2、配置pom.xml,给jar包标记坐标(导包)
启动tomcat服务器
访问资源后,500
16、maven工程servlet实例之jar包冲突解决
为什么出现500?
因为Maven没有觉得这个servlet不是servlet,但是我的明明使servlet。又是为什么呢?
Maven是自带tomcat插件的,它不需要我们之前本地安装的tomcat了,也就是说tomcat有什么,Maven就有什么。
但是,你看看tomcat的lib目录
这2个jar包的名字是不是跟下面一样?
所以,这些jar包冲突了!
那么我们怎么解决呢?
只要声明被导入的jar包的作用域即可,让这些导入的jar包只在执行代码的时候有用。
scope:
provided:只在写代码的时候(编译的时候),才会使用该jar包
test:这会在测试的时候,才会使用该jar包。
17、maven工程运行环境修改
添加tomcat7插件
添加jdk插件:使用jdk1.8编译
如果记不住可以添加做模板,然后添加的时候输入模板名称就可以添加了。
18、maven的java工程取mysql数据库数据
pom.xml配置jar包坐标:
<!-- Mysql的驱动包-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
<scope>runtime</scope>
</dependency>
<!-- 单元测试jar包-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
查询数据库:
也没什么,只是对JDBC的回顾。
public class ProvinceDaoImpl implements ProvinceDao {
public List<Province> findAll() throws ClassNotFoundException {
Connection connection= null;
PreparedStatement ps = null;
ResultSet resultSet = null;
//将结果集对象转换成java的List集合
List<Province> list = new ArrayList<Province>();
try {
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//获取数据库连接对象
connection = DriverManager.getConnection("jdbc:mysql:///province", "root", "root");
//获取执行SQL的对象,并执行SQL
ps = connection.prepareStatement("select * from province");
//获取查询结果集对象
resultSet = ps.executeQuery();
//遍历查询结果集对象
while (resultSet.next()){
//封装JavaBean
Province p = new Province();
p.setId(resultSet.getInt("id"));
p.setName(resultSet.getString("name"));
list.add(p);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
resultSet.close();
ps.close();
}
return list;
}
}
单元测试:
public class MyslqTest {
@Test
public void findAll() throws ClassNotFoundException {
ProvinceDaoImpl provinceDao = new ProvinceDaoImpl();
List<Province> all = provinceDao.findAll();
System.out.println(all);
}
}