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(); } } ------------------------------------------
maven介绍
最新推荐文章于 2024-01-23 23:17:48 发布
本文介绍了Maven作为项目管理工具的作用,如简化配置、统一项目结构,并详细阐述了Maven的下载、安装、配置过程,包括本地仓库和远程仓库的设置。此外,还讲解了如何在Maven中配置JDK版本,以及如何通过Maven创建Java和Web项目。Maven的依赖管理部分解释了如何添加依赖、理解仓库间的联系,以及如何解决依赖问题。最后,文章提供了常见问题的解决方案和作业练习,涉及JDBC操作。
摘要由CSDN通过智能技术生成