maven介绍

本文介绍了Maven作为项目管理工具的作用,如简化配置、统一项目结构,并详细阐述了Maven的下载、安装、配置过程,包括本地仓库和远程仓库的设置。此外,还讲解了如何在Maven中配置JDK版本,以及如何通过Maven创建Java和Web项目。Maven的依赖管理部分解释了如何添加依赖、理解仓库间的联系,以及如何解决依赖问题。最后,文章提供了常见问题的解决方案和作业练习,涉及JDBC操作。
摘要由CSDN通过智能技术生成
1: Maven简介
	Maven: 翻译为"专家", "内行"
	Maven是apache下的一个纯Java开发的开源项目
	Maven是一个项目管理工具, 可以简化项目配置, 统一项目结构, 使得开发者的工作变得更简单
	
	我们在课程中主要通过Maven创建Maven项目, 通过Maven帮我们下载和管理项目中所需要的依赖!
	依赖: 比如我们前面创建的 JDBC 项目中 引用了一个mysql驱动包, 如果将这个jar包从项目中移除, 就会导致整个项目都运行不了, 此时我们可以说这个项目依赖于mysql驱动包(也就是依赖于这个jar包), 因此我们将项目中所需要引入的jar包称之为"依赖"。
	
2: Maven的下载、安装、配置
2.1: 下载,安装maven
	官方下载地址: http://maven.apache.org/download.cgi
	maven是一个绿色软件, 解压之后就可以使用!
	安装时建议安装的路径中不要包含中文和空格!
	
2.2: 配置maven的本地仓库
	1)什么是本地仓库
		本地仓库就是本地硬盘上的一个目录, 这个目录用于存放Maven帮我们下载的所有jar文件(包括一些插件等)
		如果不配置本地仓库, maven会使用一个默认的路径(以windows系统为例)作为本地仓库: 
			c:/uses/{当前用户}/.m2/repository
		如果你没有这个目录(.m2/repository), maven会在第一次使用时自动创建以上目录
		可以保持默认, 也可以将本地仓库配置到其他路径!
		
	2)如何配置本地仓库
		找到[maven的安装目录]/conf/settings.xml, 在这个settings文件的55行, 添加如下内容:
		<localRepository>d:/JaveDev/localRepo3</localRepository>
		修改完后, 以后通过maven下载的所有jar文件都会保存到 D:/JavaDev/localRepo3/ 这个路径中!

2.2: 配置maven的远程仓库
	1)什么是远程仓库
		如果不配置远程仓库,maven默认会从中央仓库下载所需要的jar包和插件
		中央仓库是由maven团队维护的jar包仓库, 其中包含了全世界几乎所有的jar包, 全世界所有的人都可以通过网络连接中央仓库去下载依赖(jar包)。
		所有中央仓库面向的是全球用户,所有下载速度比较慢!

		总结:如果不配置远程仓库,默认连接中央仓库下载所需要的jar包和插件,保存到本地仓库中!
				
	2)如何配置远程仓库
		如果使用的是达内内网, 可以连接达内的远程仓库(但现在不确定这个仓库服务器是否正常)
		如果使用的是外网(比如你在家里, 或者在教室中, 中心给开了外网), 可以配置连接阿里云的远程仓库
		配置方法: 找到[maven的安装目录]/conf/settings.xml 文件, 在settings文件的<mirrors>标签内部添加一个<mirror>标签, 例如:

		配置连接阿里云的远程仓库:
			<mirror>
				<id>nexus-aliyun</id>
				<name>Nexus aliyun</name>
				<mirrorOf>central</mirrorOf>
				<url>https://maven.aliyun.com/repository/public</url>
			</mirror>
		配置连接达内的远程仓库:
			<mirror>
			    <id>nexus-tedu</id>
			    <name>Nexus tedu</name>
			    <mirrorOf>central</mirrorOf>
			    <url>http://maven.tedu.cn/nexus/content/groups/public/</url>
			</mirror>


2.3: 配置JDK版本
	因为Maven和eclipse整合之后, 通过eclipse创建maven项目默认的JDK版本是1.5版本(太旧了)
	可以在[maven的安装目录]/conf/settings.xml文件中配置JDK版本, 配置后, 再通过maven创建项目其中的JDK版本就是我们配置的版本。
	配置方法是: 在settings文件的<profiles>标签内部添加如下配置:
		<profile>
		    <id>development</id>
		    <activation>
		    	<jdk>1.8</jdk>
		    	<activeByDefault>true</activeByDefault>
		    </activation>
		    <properties>
		    	<maven.compiler.source>1.8</maven.compiler.source>
		    	<maven.compiler.target>1.8</maven.compiler.target>
		  		<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
		    </properties>
		</profile>

	注意: 以上的本地仓库配置 和 远程仓库配置 以及 JDK版本配置 都是事先添加上上去的, 如果你自己到maven官网下载一个新的maven软件, 这个新的maven软件中是没有以上配置的, 这些配置需要你自己来添加!
	
2.4: 将maven整合到eclipse中
	将maven整合到eclipse中, 就可以通过eclipse创建maven项目
	(其实eclipse中也自带了maven插件, 但是不完整, 后期在使用时很可能会出现问题, 所以不建议使用)
	具体配置方法: 参考讲义<1.3.4.将Maven配置到Eclipse中>章节

	如果在将maven和eclipse整合之后, 再修改settings.xml文件, 如果想让修改的配置生效, 可以重启eclipse!
	
3: Maven的项目构建
3.0: 通过maven构建项目的两种方式
	第一种: 使用简单方式构建maven项目
		可以创建maven的java项目
		可以创建maven的web项目
	第二种: 使用模板构建maven项目
		可以创建maven的java项目
		可以创建maven的web项目
	这里我们选择第一种方式, 即使用简单方式创建maven项目
	
3.1: 通过maven创建Java项目
	通过maven创建了一个Java项目: CGB-MAVEN-Java01
	
3.2: 通过maven创建Web项目
	通过maven创建了一个Web项目: CGB-MAVEN-Web01
	创建maven的web项目后,项目上会有一个叉号,这是因为项目中缺少文件导致的,解决方法是:
	在Web项目上右键 ==》选择:JavaEE Tools ==》选择:Generate Deployment...,webapp目录下就会生成WEB-INF目录和web.xml文件
	-----------------------------------------
	如果建好Web项目后, 项目中没有web.xml文件并且还不报错, 而且在项目上右键选项中没有"JavaEE Tools"这个选项, 很可能是你的eclipse版本不对(eclipse是java版的, 正确的应该是eclipse企业版本)
	企业版本的标识: Eclipse IDE for Enterprise Java Developers
	下载eclipse: https://www.eclipse.org/downloads/packages/
	-----------------------------------------
	!!!切换工程视图为包视图:window --> show view,在弹出的窗口中搜索:package,找到“package Explorer”双击打开即可!
	-----------------------------------------
	关于eclipse和idea工具:
	1)eclipse免费, 操作简单
	2)idea收费, 操作更加灵活(初级程序员操作起来稍微麻烦些)
	3)前两个阶段以eclipse为主, 第三四阶段以idea为主!
	
3.3: maven项目的目录结构
	通过maven创建的maven项目中有很多目录结构, 这些目录结构分别有哪些作用?
	以 CGB-Maven-Web01 web项目为例来进行说明:
	CGB-Maven-Web01
	 	|-- src/main/java(源码目录): 主要用于存放主程序/项目里的Java源文件
	 	|-- src/main/resources(源码目录): 主要用于存放项目所需要的配置文件
	 		(比如.xml文件,.properties文件...)
	 	|-- src/test/java(源码目录): 主要用于存放测试相关的java源文件
	 	|-- src/test/resources(源码目录): 主要用于存放测试程序所需要的配置文件
	 	|
	 	|-- src/main/webapp: 相当于web应用的目录, 将来这个目录中可以存放web资源文件(html/css/js/jsp/图片等...)

	 	|-- src/main/webapp/WEB-INF/web.xml文件: Web应用的核心配置文件
	 		其中可以做很多配置, 比如配置Servlet,配置session,配置监听器、配置过滤器
		|-- target/classes: 是源码目录中的文件经过编译后会输出到classes目录
		|-- pom.xml: Maven项目的配置文件, 如果当前项目需要引入jar包(mysql驱动包), 就可以在pom文件中通过添加配置信息, 让maven帮我们去下载这个jar文件,并引入到项目中。

4: Maven的依赖管理
4.1: 如何在maven项目中引入依赖(即引入jar包)?
	比如: 如何在maven项目中导入mysql8.0驱动包?
	不要将jar包直接复制到当前项目中, 因为maven可以帮我们下载并引入jar包, 方法是: 在当前项目的pom.xml添加一个 <dependencies> 标签, 在标签内部添加如下内容(mysql的依赖,mysql的坐标):
	--------------------------------------
	<dependency>
	  <groupId>mysql</groupId>
	  <artifactId>mysql-connector-java</artifactId>
	  <version>8.0.11</version>
	</dependency>
	--------------------------------------
4.2: 引入到maven项目中的依赖(jar包), 存放在哪个位置?
	引入到maven项目中的jar包, 存放在本地仓库中. 
	这个jar存放的具体位置就是: [本地仓库位置+当前jar的坐标]
	比如: 在项目的pom文件中引入了mysql8.0.11的驱动包
		<dependency>
		  <groupId>mysql</groupId>
		  <artifactId>mysql-connector-java</artifactId>
		  <version>8.0.11</version>
		</dependency>
	而我们的本地仓库的位置是: D:\JavaDev\localRepo3
	那么这个mysql8.0.11的jar文件的位置: 
		D:\JavaDev\localRepo3\mysql\mysql-connector-java\8.0.11

	那么大家思考一下: 本地仓库中的jar包是从哪来的?
	
4.3: maven三种仓库之间的联系
	本地仓库: 就是本地硬盘上的一个目录, 用于存放从[远程仓库]或者[中央仓库]下载下来的jar文件

	远程仓库: 通常是由公司或团队搭建, 服务于公司或团队的内部远程仓库。
		远程仓库刚搭建完毕时,内部几乎是没有jar包的,其中的jar包是从中央仓库下载下来并保存到远程仓库中。
	中央仓库: 由maven团队维护的jar包仓库, 其中包含了全世界几乎所有的jar包, 全世界所有的人都可以通过网络连接中央仓库去下载依赖(jar包)。
		所有中央仓库面向的是全球用户,所有下载速度比较慢!

	假如:现在要做一个项目A,项目A中需要引入SSM三大框架的jar包
	1)在项目A的pom文件中添加三大框架的坐标之后,maven首先会根据坐标到本地仓库中去寻找这三大框架的jar包
	2)如果本地仓库中有这些jar包,直接引入到当前项目中即可!
	3)如果本地仓库中没有这些jar包,maven会去连接远程仓库(前提是配置远程仓库),远程仓库中有的话,直接从远程仓库中下载到本地仓库中,在本地仓库中保留一份,再从本地仓库引入到项目A中。
	如果本地仓库要从远程仓库下载jar包,而远程仓库也没有这个jar包,远程仓库会自动连接中央仓库,从中央仓库中下载到远程仓库,在远程仓库中保留一份,再下载到本地仓库中,再从本地仓库引入到项目A中
	4)如果本地仓库中没有这些jar包,并且现在没有配置远程仓库,那么maven会直接连接中央仓库,从中央仓库下载jar包到本地仓库,在本地仓库中保留一份,再从本地仓库中引入到项目A中。

4.4: 如何在maven的pom文件中添加依赖?
	如果不知道一个jar包的坐标信息, 怎么去在项目的pom文件中引入这个jar包?
	添加方式一: 如果添加一个jar包不知道坐标是什么, 可以从网上搜索这个jar包的坐标
		搜索jar包坐标的网址: 
			http://mvnrepository.com
			http://maven.ityuan.com
	添加方式二: 
		如果添加的jar包在本地仓库中有(比如你之前在别的项目中使用过这个包)
		添加方法是: 打开当前项目的pom.xml文件, 在pom文件中右键 --> Maven --> Add Dependency, 在弹出的窗口中输入要添加的依赖包。
		如果本地仓库中没有这个jar包,必然搜索不到!
		如果本地仓库中有这个jar包也搜索不到,解决方法是:打开 Maven repositories 窗口, 找到 Local Repository, 在这个选项上右键 --> Rebuild Index (重建索引)

5: Maven其他
5.1.Maven常见问题
	如果通过maven创建的项目结构不完整, 或者后期在引入jar包时, jar包引入失败, 可以参考如下解决方法: 
	1)确保当前网络环境是否能连接上所配置的远程仓库,接着进行第2步。(若不在达内教室,是无法连接达内的远程仓库;又或者使用手机热点网络将无法连接阿里云的远程仓库等)
	2)在项目的pom文件中敲一个空白行,再保存文件。(目的是让maven检测到pom文件发生了变化,再根据pom文件中的配置,到本地仓库中寻找对应的jar包,如果没有相应的jar包,maven会重新下载)
	3)接着在项目上,右键---> Maven ---> Update Project...,在弹出的窗口中勾选下方的 "[]Force Update...",即强制更新项目,此时maven也会检查pom文件,下载没有引入的相关依赖。
	4)如果以上操作还是不行,到本地仓库的目录下,将本地仓库中所有的目录都删除,删除时,由于eclipse正在使用本地仓库中的资源文件,所以会阻止删除,此时将eclipse关闭,再将本地仓库中的所有目录删除,重启eclipse。
	5)启动eclipse后,再将上面的第(2)步和第(3)步再做一遍!
	6)如果还是不行,就使用老师下发的本地仓库替换你的本地仓库!
	
5.2: Maven的本地库支持复制
	如果因为网络问题导致无法通过maven下载所需要的依赖,可以将别的电脑上、已经下载好的本地库,复制到我们的本地库中。在复制之前, 先将自己本地库目录中的所有内容全部删除(如果删除不了就关闭eclipse再删除), 将老师下发的本地库解压, 打开本地库目录, 选中里面所有的内容复制, 粘贴到自己的本地库中!

6: 导入已有的maven项目(特别容易出问题!)


7: tomcat服务器(后面讲)
	

8: 作业:回顾JDBC内容
	1)准备yonghedb库,以及emp表,并且往这个表中插入若干条记录
	-- ------------------------------------------
	-- 1、创建数据库 yonghedb 数据库
	create database if not exists yonghedb charset utf8;
	use yonghedb; -- 选择yonghedb数据库
	-- 2、删除emp表(如果存在)
	drop table if exists emp;
	-- 3、在 yonghedb 库中创建 emp 表
	create table emp(
		id int primary key auto_increment,
		name varchar(50),
		job varchar(50),
		salary double
	);
	-- 4、往 emp 表中, 插入若干条记录
	insert into emp values(null, '王海涛', '程序员', 3300);
	insert into emp values(null, '齐雷', '程序员', 2800);
	insert into emp values(null, '刘沛霞', '程序员鼓励师', 2700);
	insert into emp values(null, '陈子枢', '部门总监', 4200);
	insert into emp values(null, '刘昱江', '程序员', 3000);
	insert into emp values(null, '董长春', '程序员', 3500);
	insert into emp values(null, '苍老师', '程序员', 3700);
	insert into emp values(null, '韩少云', 'CEO', 5000);
	-- ------------------------------------------
	2)在CGB-JDBC项目中创建一个Emp类, 用于封装所有的员工信息, 代码如下:
	------------------------------------------
	public class Emp {
		//提供私有属性
		private Integer id;
		private String name;
		private String job;
		private Double salary;

		//提供属性对应的get和set方法
		public Integer getId() {
			return id;
		}
		public void setId(Integer id) {
			this.id = id;
		}
		public String getName() {
			return name;
		}
		public void setName(String name) {
			this.name = name;
		}
		public String getJob() {
			return job;
		}
		public void setJob(String job) {
			this.job = job;
		}
		public Double getSalary() {
			return salary;
		}
		public void setSalary(Double salary) {
			this.salary = salary;
		}
		//toString方法
		@Override
		public String toString() {
			return "Emp [id=" + id + ", name=" + name + ", job=" + job + ", salary=" + salary + "]";
		}
	}

	------------------------------------------
	3)在CGB-JDBC项目中创建一个类:cn.tedu.JdbcTest
	4)在这个JdbcTest类中的main函数里: 查询yonghedb.emp表中的所有数据
		将每条记录封装到一个Emp对象中,再将每一个Emp对象封装到List集合中
	------------------------------------------
	public static void main(String[] args) {
		try {
			//注册驱动
			Class.forName( "com.mysql.cj.jdbc.Driver" );
			//获取连接
			Connection conn = DriverManager.getConnection(
				"jdbc:mysql:///yonghedb?characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false",
				"root","root");
			//获取传输器
			Statement stat = conn.createStatement();
			//执行sql,返回结果
			ResultSet rs = stat.executeQuery( "select * from emp" );
			
			//遍历rs对象中的数据,将每一条数据封装为一个Emp对象
			List<Emp> list = new ArrayList<Emp>();
			Emp emp;
			while( rs.next() ) {
				int id = rs.getInt( "id" );
				String name = rs.getString( "name" );
				String job = rs.getString( "job" );
				double salary = rs.getDouble( "salary" );
				//将当前遍历的这条记录封装到emp对象中
				emp = new Emp();
				emp.setId(id);
				emp.setName(name);
				emp.setJob(job);
				emp.setSalary(salary);
				//将封装好数据的emp对象存到list集合中
				list.add(emp);
			}
			
			//测试list集合中的数据是否是emp表中的所有记录
			for ( Emp e : list ) {
				System.out.println( e );
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}	
	
	------------------------------------------
	




	


















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值