在Java项目开发中,我们通常会涉及到第三方依赖的使用,例如 JUnit、Log4j、MyBatis 等框架。它们大多数以 .jar
包的形式存在。为了将这些 .jar
包集成到项目中,Maven 提供了非常便利的依赖管理机制。
如果直接将这些 .jar
包手动导入到项目中,会出现以下问题:
.jar
包可能会出现冲突和兼容性问题。Maven 解决了这些问题。其本质是一个项目管理工具,通过一种称为 POM(Project Object Model) 的机制来管理项目的构建、依赖和生命周期。
Maven 是用 Java 编写的,它管理的所有内容都以面向对象的形式进行设计。Maven 将一个项目视作一个对象,这个对象就称为 POM(项目对象模型)。pom.xml
文件就是这个对象的配置文件,Maven 通过加载这个文件来了解项目的相关信息。在这里插入图片描述
Maven 的第二个核心是 依赖管理,即它管理项目所需的所有依赖资源(如 .jar
包)。这些依赖可以存放在以下三种仓库中:
Maven 的主要作用可以分为三类:
各目录存放资源类型说明: src/main/java:项目java源码 src/main/resources:项目的相关配置文件(比如mybatis配置,xml映射配置,自定义配置文件等) src/main/webapp:web资源(比如html,css,js等) src/test/java:测试代码 src/test/resources:测试相关配置文件 src/pom.xml:项目pom文件
Maven 的安装非常简单,它是一个绿色软件,只需解压即可。在解压后,配置环境变量(如 JAVA_HOME
和 MAVEN_HOME
),即可开始使用。
maven的官网
maven是一个绿色软件,解压即安装,非常容易,
我们找到今日课程资料中的安装程序,将里面的apache-maven-3.6.3-bin.zip直接解压到E盘根目录下即可
解压完成后我们可以查看一下maven自己的一个目录结构如下
各目录结构说明: bin:可执行程序目录 boot:maven自身的启动加载器 conf:maven配置文件的存放目录 lib:maven运行所需库的存放目录
环境配置 maven的运行需要java的环境,需要我们配置JAVA_HOME环境变量
下面在去配置MAVEN_HOME的环境变量 1:我的电脑-------->属性--------->高级系统设置---------->新建系统变量MAVEN_HOME
# 配置MAVEN_HOME环境变量
MAVEN_HOME=D:/apache-maven-3.6.3
Maven 仓库中的资源(如 .jar
包)使用 坐标 来定位。坐标包括:
org.mybatis
)。mybatis
)。3.5.4
)。如果要查询maven某一个资源的坐标,我们通常可以去maven的仓库进行查询
开发者要在自己电脑上做开发,首先要做的就是配置本地仓库 默认情况下maven本地仓库的位置在哪儿呢? 我们可以选择在全局进行配置,在maven的配置文件conf/settings.xml中可以找到它的说明 因为我们平时开发项目所有的资源会比较多,而且各种资源还有好多的版本,资源与资源之间还有相互依赖的这种情况,因此本地仓库保存的内容会非常的多,它的体积会很大,如果放在C盘下不太合适,因此我们可以自己来指定一个位置作为本地仓库的位置,这个指定同样是需要来修改maven的配置文件conf/settings.xml 在我们前面查看这个文件的时候大家会发现它提供了一个标签<localRepository>/path/to/local/repo</localRepository>, 这个标签中配置的值就是我们本地仓库的位置,但是这个标签是在注释中的,也就是说目前不起作用,因此我们要将该标签挪出注释,并修改标签内的值,指定一个新的位置作为本地仓库的位置,例如 E:\maven_repository 另外大家需要注意 :maven默认连接的远程仓库位置是:(即中央仓库) 国外的中央仓库
Maven 默认连接到中央仓库,但也可以配置镜像站点(如阿里云仓库)来加速资源下载。
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>aliyunmaven</id>
<mirrorOf>*</mirrorOf>
<name>阿里云公共仓库</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
Maven生命周期与插件 maven的构建生命周期描述的是一次构建过程经历了多少个事件 比如我们项目最常用的一套流程如下: 当然maven的生命周期不止这一套,总共分为3套,每套里面包含的事件如下 (1)clean:清理工作 pre-clean:执行一些在clean之前的工作 clean:移除上一次构建产生的所有文件 post-clean:执行一些在clean之后立刻完成的工作 (2)default:核心工作,例如编译,测试,打包,部署等
对于default生命周期,每个事件在执行之前都会将之前的所有事件依次执行一遍 (3)site:产生报告,发布站点等 pre-site:执行一些在生成站点文档之前的工作 site:生成项目的站点文档 post-site:执行一些在生成站点文档之后完成的工作,为部署做准备 site-deploy:将生成的站点文档部署到特定的服务器上
5.x的驱动和url
url = jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf8
driver = com.mysql.jdbc.Driver
8.x的驱动和url
url = jdbc:mysql://localhost:3306/ssq?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false
driver = com.mysql.cj.jdbc.Driver
依赖的jar默认情况可以在任何地方可用,可以通过scope标签设定其作用范围
这里的范围主要是指以下三种范围
(1)主程序范围有效(src/main目录范围内)
(2)测试程序范围内有效(src/test目录范围内)
(3)是否参与打包(package指令范围内)
此外:scope
标签的取值有四种:compile,test,provided,runtime
在idea中集成Maven
-DarchetypeCatalog=internal
Java 中的数组有以下缺点:
Java 中引入了集合(Collection)来解决数组的这些缺点。集合是一个存储对象数据的容器,其大小可动态变化,且能更方便地进行元素增删操作。
集合有以下特点:
特性 | 数组 | 集合 |
---|---|---|
长度 | 固定 | 动态变化 |
存储类型 | 可以存储基本类型和引用类型 | 只能存储引用类型 |
使用场景 | 数据个数和类型确定的场景 | 数据个数不确定且需要增删元素的场景 |
Java 的集合体系主要分为两类:
我们将实现一个简单的京东商城应用,功能包括用户登录、注册、查询商品和添加商品等。
package com.shool.test2;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("欢迎使用京东商城");
System.out.println("1. 登录");
System.out.println("2. 注册");
System.out.println("3. 查询所有商品");
System.out.println("4. 添加商品");
System.out.println("5. 退出");
System.out.println("请选择:");
int choice = sc.nextInt();
switch (choice) {
case 1:
System.out.println("登录操作");
break;
case 2:
System.out.println("注册操作");
break;
case 3:
System.out.println("查询所有商品");
break;
case 4:
System.out.println("添加商品");
break;
case 5:
System.out.println("退出");
System.exit(0);
break;
}
}
}
}
Users
package com.shool.test2;
import java.util.Scanner;
/**
●
@version 1.0
●
@Author yishu
●
@Date 2024-12-24 10:48
●
@注释
*/
public class Test2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true){
System.out.println("欢迎使用京东商城");
System.out.println("1.登录");
System.out.println("2.注册");
System.out.println("3.查询所有商品");
System.out.println("4.添加商品");
System.out.println("5.退出");
System.out.println("请选择:");
int chioce = sc.nextInt();
switch (chioce){
case 1:
System.out.println("登录操作");
break;
case 2:
System.out.println("注册操作");
break;
case 3:
System.out.println("查询所有商品");
break;
case 4:
System.out.println("添加商品");
break;
case 5:
System.out.println("退出");
System.exit(0);
break;
}
}
}
}
Users
package com.shool.entity;
import java.util.Objects;
/**
●
@version 1.0
●
@Author yishu
●
@Date 2024-12-24 11:08
●
@注释
*/
public class Users {
private String uname;
private String upwd;
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpwd() {
return upwd;
}
public void setUpwd(String upwd) {
this.upwd = upwd;
}
public Users() {
}
public Users(String uname, String upwd) {
this.uname = uname;
this.upwd = upwd;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Users users = (Users) o;
return Objects.equals(uname, users.uname) && Objects.equals(upwd, users.upwd);
}
@Override
public int hashCode() {
return Objects.hash(uname, upwd);
}
@Override
public String toString() {
return "Users{" +
", uname='" + uname + '\'' +
", upwd='" + upwd + '\'' +
'}';
}
}
新建一个UsersDao 新建一个ArrayList集合 用来存储 users
通过本教程,您了解了 Maven 的基本概念、功能以及如何在 Java 项目中使用它来进行依赖管理、构建和生命周期管理。同时,学习了 Java 集合 的优势以及在实际项目中如何使用集合来进行数据存储和操作。