Maven教学--上

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: Maven教学--上

Maven教程–上

先看一个问题,引出Maven

需求说明/图解

  1. 编写一个类, 有一个方法sum,可以返回两个数的和
  2. 编写测试类TestSum, 可以测试sum 是否正确.

使用传统方式完成

  1. 创建传统的java 项目java-hello

  2. 创建Hello.java
public class Hello {
    public String sum(int n1, int n2) {
        System.out.println("sum= " + (n1 + n2));
        return "sum= " + (n1 + n2);
    }
}
  1. 创建HelloTest.java
public class HelloTest {
    @Test
    public void testSum() {
        Hello hello = new Hello();
        String res = hello.sum(1, 9);
        //使用断言
        /**
         * 1.Assert 是一个断言类,(就是判断实际返回的值和期望值是否相同)
         * 2.如果res 和 "sum=10" 是相同的,则通过断言
         * 3.如果res 和 "sum=10" 是不相同的,则给出提示
         *
         */
        Assert.assertEquals("sum=10", res);
    }
}

传统方式问题/不足分析->Maven

  1. 包管理不方便,比如希望在项目增加对Mysql 数据库的操作, 怎么办?

  1. 如果希望将该项目打包成可以发布的jar , 怎么办?
  2. 如果项目很大,包越来越多,包出现版本冲突怎么办?
  3. 很多框架,比如spring5.x 需要使用jackson-2.9.x.jar 的包,处理json, 包的兼容性很烦人.
  4. 还有其他问题,比如项目很大,包括多个模块,模块有共有的jar, 怎么办? ===> 引出Maven

Maven 快速入门实例

需求说明/图解

  1. 编写一个类, 有一个方法sum,可以返回两个数的和
  2. 编写测试类TestSum, 可以测试sum 是否正确.

创建Maven 项目java-project-maven

在创建Maven 项目的过程中涉及到的groupid、ArtifactId、Version、项目组织结构,在常用工具专栏 maven作用讲解—以及怎么配置阿里的maven镜像]

创建\Hello.java
public class Hello {
    public String sum(int n1, int n2) {
        System.out.println("sum= " + (n1 + n2));
        return "sum= " + (n1 + n2);
    }
}
创建test测试类

\src\test\java\com\HelloTest.java , 注意这个文件是创建再src\test… 目录下的.

public class TestHello {
    @Test
    public void testSum() {
        Hello hello = new Hello();
        String res = hello.sum(10, 50);
        /**
         * 1.Assert 是一个断言类,(就是判断实际返回的值和期望值是否相同)
         * 2.如果res 和 "sum=10" 是相同的,则通过断言
         * 3.如果res 和 "sum=10" 是不相同的,则给出提示
         *
         */
        Assert.assertEquals("sum=60", res);
    }
}
修改pom.xml

pom.xml 文件(这个文件的作用就是引入项目依赖的jar)

<!--
        解读:modelVersion
        1. 描述这个pom文件/pom模型遵循的哪个版本
        2. 对应maven2 和 maven3 而言, 这里的modelVersion只能是4.0.0
    -->
    <modelVersion>4.0.0</modelVersion>
    <!--
        解读: 下面是指定该项目的坐标, 是创建项目时,程序员指定
        1. groupId: 组织名
        2. artifactId: 项目名
        3. version: 版本
    -->
    <groupId>com.wyxedu</groupId>
    <artifactId>java-project-maven</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--
        解读
        1. 这里就是引入项目需要的jar包, 类似传统项目的import jar的作用
        2. 在 dependencies标签内, 可以指定多个需要依赖的jar /导入jar
        3. 引入的jar包需要一个完整的jar包坐标, 从mvn仓库查询得到
    -->
    <dependencies>
        <dependency>
            <!-- 依赖jar的 groupId : 组织名-->
            <groupId>junit</groupId>
            <!-- 依赖jar的 artifactId : 项目名-->
            <artifactId>junit</artifactId>
            <!-- 依赖jar的 version : 版本-->
            <version>4.12</version>
            <!-- 该jar包的作用范围, 这里就是说引入的junit包,作用范围在 src/test。。目录下,
                 关于scope后面我们还会详解.
             -->
            <scope>test</scope>
        </dependency>
在哪里看项目引入的jar 包?

完成测试

运行HelloTest.java

Maven 带来了哪些好处?

  1. 包管理更加方便,比如老师希望在项目增加对Mysql 数据库的操作, 怎么办?, 在pom.xml加入即可。

● 修改: pom.xml , 加入mysql 的依赖即可.

3, 私服: 开发团队搭建的存储资源的仓库,可以个性化仓库(比如只供团队使用的jar), 同时提升下载速度

4, 我们个人开发时,可以直接从中央仓库下,如果想提升下载速度,可以设置镜像仓库, 这个我们在前面讲过.

坐标

作用: 资源的唯一标识,定位Maven 仓库中资源的位置

坐标构成
  1. groupld(组织id): 定义当前Maven 项目隶属组织名称(例如∶com.spring)
  2. artifactId(项目ID): 定义当前Maven 项目名称
  3. version(版本号): 定义当前项目版本号
  4. 如何获取jar 坐标
具体案例,比如mysql jar

坐标使用-开始入门

需求说明

  1. 请创建一个maven 项目maven-project-01
  2. 要求能够编程访问mysql 数据库,使用mysql 驱动8.0.27
代码+配置实现
  1. 创建maven 项目maven-project-01.
  2. 在pom.xml 文件中导入/引入mysql 8.0.27 jar 依赖即可
<dependencies>
        <!-- 引入mysql依赖, 要求版本是8.0.27 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.27</version>
        </dependency>
    </dependencies>
  1. 观察项目jar 包情况, 一目了然

IDEA 集成自己安装的Maven

需求说明

在实际开发中,如果不想使用idea 自带的Maven, 可以通过配置进行切换

具体实现步骤

默认的maven 设置

重新设置Maven home directory , User setting file 和local reponsitory 即可

刷新maven, 同步本地仓库即可.

仓库配置

本地仓库配置

本地仓库概念, 前面老师讲过了

配置步骤

● 说明: 除了在idea 中指定仓库位置,也可以在配置文件settings.xml 来指定

  1. 应用场景:独立使用Maven ,老师这里就是给大家演示下使用, 如果在idea 指定了新的仓库位置,就不需在修改settings.xml 了
  2. 修改D:\program\apache-maven-3.6.3-bin\apache-maven-3.6.3\conf\settings.xml , 根据实际情况来, 为了测试, 可以再新建一个本地仓库目录
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <!-- localRepository
    | The path to the local repository maven will use to store artifacts.
    |
    | Default: ${user.home}/.m2/repository
    <localRepository>/path/to/local/repo</localRepository>
    -->
    <localRepository>D:\wyxedu_maven_reponsitory</localRepository>
  1. 注意细节: 路径的分割符号是\
如图配置

配置后,因为本地仓库变化, 而jar 包还没有下载, 就会爆红

更新Maven

观察新的本地仓库

远程仓库

远程仓库/中央仓库地址是规定好的, 不用修改

镜像仓库配置

1 镜像仓库:对远程仓库镜像(比如阿里云镜像仓库, 华为云镜像仓库)

2 配置镜像作用: 修改下载源,提升下载速度

3 阿里云镜像仓库地址: https://developer.aliyun.com/mvn/guide

配置步骤
  1. 修改D:\program\apache-maven-3.6.3-bin\apache-maven-3.6.3\conf\settings.xml
<mirrors>
    <!-- mirror
    | Specifies a repository mirror site to use instead of a given repository. The repository
    that
    | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are
    used
    | for inheritance and direct lookup purposes, and must be unique across the set of
    mirrors.
    |
    <mirror>
    <id>mirrorId</id>
    <mirrorOf>repositoryId</mirrorOf>
    <name>Human Readable Name for this Mirror.</name>
    <url>http://my.repository.com/repo/path</url>
    </mirror>
    -->
    <!--配置具体的仓库的下载镜像-->
    <mirror>
        <!--此镜像的唯一标识符,用来区分不同的mirror 元素-->
        <id>nexus-aliyun</id>
        <!-- 对哪种仓库进行镜像,简单说就是替代哪个仓库-->
        <mirrorOf>central</mirrorOf>
        <!-- 镜像名称-->
        <name>Nexus aliyun</name>
        <!--镜像URL -->
        <url>https://maven.aliyun.com/repository/central</url>
    </mirror>
</mirrors>
测试

看看下载jar 依赖速度是否快了, 结论:飞一般的速度(提示, 为了看效果,可以把下载好的jar 删除, 更新Maven, 重新下载jar 包, 体会下载速度…)

全局setting 和用户setting

  1. global settings: 本机器的配置,使用这台机器的所有用户都是用这个配置
  2. user settings: 当前用户的配置
  3. maven 安装路径下的conf 下的setting 属于全局配置
  4. IDEA 中, .m2/settings.xml 下属于用户配置(如图)

  1. 用户配置也可以指定,比如前面我们切换maven , 就重新指定了user setting.

  1. 在maven 运行的时候,用户配置会覆盖全局配置, 也就是用户配置优先级高.

注意事项和细节说明

  1. 给某个项目指定了新的maven , user setting 和local repository 只对当前这个项目生效

  1. 不会影响你以前创建的maven 项目
  2. 创建新的maven 项目时, 仍然是默认的maven, user setting 和local repository。


相关实践学习
通过容器镜像仓库与容器服务快速部署spring-hello应用
本教程主要讲述如何将本地Java代码程序上传并在云端以容器化的构建、传输和运行。
Kubernetes极速入门
Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 本课程从Kubernetes的简介、功能、架构,集群的概念、工具及部署等各个方面进行了详细的讲解及展示,通过对本课程的学习,可以对Kubernetes有一个较为全面的认识,并初步掌握Kubernetes相关的安装部署及使用技巧。本课程由黑马程序员提供。 &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情:&nbsp;https://www.aliyun.com/product/kubernetes
目录
相关文章
|
Java Maven Android开发
Maven工程的安装配置及搭建(集成eclipse完成案例,保姆级教学)2
Maven工程的安装配置及搭建(集成eclipse完成案例,保姆级教学)2
130 0
|
Java 应用服务中间件 Maven
不同版本Idea部署Maven和Tomcat教学
不同版本Idea部署Maven和Tomcat教学
203 0
|
1月前
|
Java Maven
震惊!idea专业版如何配置maven国内源手把手教学
文章提供了如何在IDEA专业版中配置Maven使用国内源(如阿里云)的详细步骤,以加快依赖下载速度,并解释了配置国内源的原因。
534 0
震惊!idea专业版如何配置maven国内源手把手教学
|
5月前
|
NoSQL Java 网络安全
Redis在java(Maven)中使用,常用基本命令大全,最全Termius怎么进行端口映射(MAC系统最简单教学)
Redis在java(Maven)中使用,常用基本命令大全,最全Termius怎么进行端口映射(MAC系统最简单教学)
|
Java Linux Maven
Maven工程的安装配置及搭建(集成eclipse完成案例,保姆级教学)1
Maven工程的安装配置及搭建(集成eclipse完成案例,保姆级教学)1
170 0
Maven工程的安装配置及搭建(集成eclipse完成案例,保姆级教学)1
|
XML Java 测试技术
如何将maven部署在Idea的教学,和idea介绍
如何将maven部署在Idea的教学,和idea介绍
|
存储 缓存 Java
Maven超细致史上最全Maven下载安装配置教学(2022更新...全版本)建议收藏...赠送IDEA配置Maven教程
Maven超细致史上最全Maven下载安装配置教学(2022更新...全版本)建议收藏...赠送IDEA配置Maven教程
3336 0
Maven超细致史上最全Maven下载安装配置教学(2022更新...全版本)建议收藏...赠送IDEA配置Maven教程
|
16天前
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
72 8
|
14天前
|
Java 应用服务中间件 Maven
Maven的三种项目打包方式——pom,jar,war的区别
Maven 提供了多种打包方式,分别适用于不同类型的项目。pom 用于父项目或聚合项目,便于项目的结构和依赖管理;jar 用于Java类库或可执行的Java应用程序;war 则专用于Java Web应用程序的部署。理解这些打包方式的用途和特点,可以帮助开发者更好地配置和管理Maven项目,确保构建和部署过程的顺利进行。无论是单模块项目还是多模块项目,选择合适的打包方式对于项目的成功至关重要。
38 3
|
1月前
|
Java 关系型数据库 MySQL
Maven——创建 Spring Boot项目
Maven 是一个项目管理工具,通过配置 `pom.xml` 文件自动获取所需的 jar 包,简化了项目的构建和管理过程。其核心功能包括项目构建和依赖管理,支持创建、编译、测试、打包和发布项目。Maven 仓库分为本地仓库和远程仓库,远程仓库包括中央仓库、私服和其他公共库。此外,文档还介绍了如何创建第一个 SpringBoot 项目并实现简单的 HTTP 请求响应。
129 1
Maven——创建 Spring Boot项目