前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【Java 篇】Maven 的神奇魔法与集合的奇妙世界:在 Java 编程领域中探索代码的奥秘之旅

【Java 篇】Maven 的神奇魔法与集合的奇妙世界:在 Java 编程领域中探索代码的奥秘之旅

作者头像
意疏
发布2024-12-26 09:23:19
发布2024-12-26 09:23:19
6100
代码可运行
举报
文章被收录于专栏:学习学习
运行总次数:0
代码可运行

Java中的Maven与集合

1. Maven是什么?

在Java项目开发中,我们通常会涉及到第三方依赖的使用,例如 JUnit、Log4j、MyBatis 等框架。它们大多数以 .jar 包的形式存在。为了将这些 .jar 包集成到项目中,Maven 提供了非常便利的依赖管理机制。

如果直接将这些 .jar 包手动导入到项目中,会出现以下问题:

  1. 项目体积过大,不利于项目发布。
  2. 不同版本的 .jar 包可能会出现冲突和兼容性问题。

Maven 解决了这些问题。其本质是一个项目管理工具,通过一种称为 POM(Project Object Model) 的机制来管理项目的构建、依赖和生命周期。

1.1 Maven的基本概念

Maven 是用 Java 编写的,它管理的所有内容都以面向对象的形式进行设计。Maven 将一个项目视作一个对象,这个对象就称为 POM(项目对象模型)。pom.xml 文件就是这个对象的配置文件,Maven 通过加载这个文件来了解项目的相关信息。在这里插入图片描述

1.2 依赖管理

Maven 的第二个核心是 依赖管理,即它管理项目所需的所有依赖资源(如 .jar 包)。这些依赖可以存放在以下三种仓库中:

  • 本地仓库:存储在开发者的本地计算机中。
  • 私服:公司或组织内部的仓库。
  • 中央仓库:Maven 官方维护的公共仓库,所有开源的资源都可以在这里找到。
1.3 Maven的作用

Maven 的主要作用可以分为三类:

  1. 项目构建:提供标准的、跨平台的自动化构建项目方式。
  2. 依赖管理:便捷地管理项目依赖资源,避免版本冲突等问题。
  3. 统一开发结构:提供标准的项目开发结构。

各目录存放资源类型说明: 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文件

1.4 Maven环境搭建

Maven 的安装非常简单,它是一个绿色软件,只需解压即可。在解压后,配置环境变量(如 JAVA_HOMEMAVEN_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

代码语言:javascript
代码运行次数:0
复制
# 配置MAVEN_HOME环境变量
MAVEN_HOME=D:/apache-maven-3.6.3
1.5 Maven仓库和坐标

Maven 仓库中的资源(如 .jar 包)使用 坐标 来定位。坐标包括:

  • groupId:组织名称,通常是域名反写(如:org.mybatis)。
  • artifactId:资源名称,通常是项目名称(如:mybatis)。
  • version:资源的版本号(如:3.5.4)。

如果要查询maven某一个资源的坐标,我们通常可以去maven的仓库进行查询

  • maven坐标的作用: 使用唯一标识,唯一性定义资源位置,通过该标识可以将资源的识别与下载工作交由机器完成
1.5.1 仓库配置

开发者要在自己电脑上做开发,首先要做的就是配置本地仓库 默认情况下maven本地仓库的位置在哪儿呢? 我们可以选择在全局进行配置,在maven的配置文件conf/settings.xml中可以找到它的说明 因为我们平时开发项目所有的资源会比较多,而且各种资源还有好多的版本,资源与资源之间还有相互依赖的这种情况,因此本地仓库保存的内容会非常的多,它的体积会很大,如果放在C盘下不太合适,因此我们可以自己来指定一个位置作为本地仓库的位置,这个指定同样是需要来修改maven的配置文件conf/settings.xml 在我们前面查看这个文件的时候大家会发现它提供了一个标签<localRepository>/path/to/local/repo</localRepository>, 这个标签中配置的值就是我们本地仓库的位置,但是这个标签是在注释中的,也就是说目前不起作用,因此我们要将该标签挪出注释,并修改标签内的值,指定一个新的位置作为本地仓库的位置,例如 E:\maven_repository 另外大家需要注意 :maven默认连接的远程仓库位置是:(即中央仓库) 国外的中央仓库

Maven 默认连接到中央仓库,但也可以配置镜像站点(如阿里云仓库)来加速资源下载。

代码语言:javascript
代码运行次数:0
复制
<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>
1.6 Maven生命周期与插件

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:将生成的站点文档部署到特定的服务器上

JDBC驱动与url

5.x的驱动和url

代码语言:javascript
代码运行次数:0
复制
url = jdbc:mysql://localhost:3306/user?useUnicode=true&amp;characterEncoding=utf8
driver = com.mysql.jdbc.Driver

8.x的驱动和url

代码语言:javascript
代码运行次数:0
复制
url = jdbc:mysql://localhost:3306/ssq?serverTimezone=UTC&amp;characterEncoding=utf8&amp;useUnicode=true&amp;useSSL=false
driver = com.mysql.cj.jdbc.Driver
1.7 Maven依赖范围

依赖的jar默认情况可以在任何地方可用,可以通过scope标签设定其作用范围 这里的范围主要是指以下三种范围 (1)主程序范围有效(src/main目录范围内) (2)测试程序范围内有效(src/test目录范围内) (3)是否参与打包(package指令范围内) 此外:scope标签的取值有四种:compile,test,provided,runtime

在idea中集成Maven

  • 注:这行代码真挺有用的 我每次忘了都会看这里重新写上来 -DarchetypeCatalog=internal

2. 集合

2.1 数组的缺点

Java 中的数组有以下缺点:

  1. 长度固定:数组的大小在定义时必须确定,无法动态扩展。
  2. 不适合增删操作:插入、删除元素需要频繁移动元素,效率较低。
2.2 集合的优势

Java 中引入了集合(Collection)来解决数组的这些缺点。集合是一个存储对象数据的容器,其大小可动态变化,且能更方便地进行元素增删操作。

集合有以下特点:

  1. 大小可变:集合的大小是动态变化的。
  2. 存储引用类型:集合中只能存储引用类型的数据。
2.3 数组与集合的比较

特性

数组

集合

长度

固定

动态变化

存储类型

可以存储基本类型和引用类型

只能存储引用类型

使用场景

数据个数和类型确定的场景

数据个数不确定且需要增删元素的场景

2.4 集合体系

Java 的集合体系主要分为两类:

  • Collection:单列集合,每个元素只包含一个值。
  • Map:双列集合,每个元素包含两个值(键值对)。
  • 注:这个图也很重要

3. 小案例:京东商城

3.1 项目框架

我们将实现一个简单的京东商城应用,功能包括用户登录、注册、查询商品和添加商品等。

代码语言:javascript
代码运行次数:0
复制
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;
            }
        }
    }
}
3.2 用户实体类 Users
代码语言:javascript
代码运行次数:0
复制
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(&quot;欢迎使用京东商城&quot;);
     System.out.println(&quot;1.登录&quot;);
     System.out.println(&quot;2.注册&quot;);
     System.out.println(&quot;3.查询所有商品&quot;);
     System.out.println(&quot;4.添加商品&quot;);
     System.out.println(&quot;5.退出&quot;);

     System.out.println(&quot;请选择:&quot;);
     int chioce = sc.nextInt();
     switch (chioce){
         case 1:
             System.out.println(&quot;登录操作&quot;);
             break;
         case 2:
             System.out.println(&quot;注册操作&quot;);
             break;
         case 3:
             System.out.println(&quot;查询所有商品&quot;);
             break;
         case 4:
             System.out.println(&quot;添加商品&quot;);
             break;
         case 5:
             System.out.println(&quot;退出&quot;);
             System.exit(0);
             break;
     }
 }
 }
}
3.3 完成登录操作 首先要新建一个实体类

Users

代码语言:javascript
代码运行次数:0
复制
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 + '\'' +
            '}';
}
}
3.4 完成登录操作

新建一个UsersDao 新建一个ArrayList集合 用来存储 users

总结

通过本教程,您了解了 Maven 的基本概念、功能以及如何在 Java 项目中使用它来进行依赖管理、构建和生命周期管理。同时,学习了 Java 集合 的优势以及在实际项目中如何使用集合来进行数据存储和操作。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java中的Maven与集合
    • 1. Maven是什么?
      • 1.1 Maven的基本概念
      • 1.2 依赖管理
      • 1.3 Maven的作用
      • 1.4 Maven环境搭建
      • 1.5 Maven仓库和坐标
      • 1.6 Maven生命周期与插件
      • JDBC驱动与url
      • 1.7 Maven依赖范围
    • 2. 集合
      • 2.1 数组的缺点
      • 2.2 集合的优势
      • 2.3 数组与集合的比较
      • 2.4 集合体系
    • 3. 小案例:京东商城
      • 3.1 项目框架
      • 3.2 用户实体类 Users
      • 3.3 完成登录操作 首先要新建一个实体类
      • 3.4 完成登录操作
    • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档