Maven学习笔记

1. Maven简介

Maven是专门用于管理和构建Java项目的工具,它的主要功能有:

  • 提供了一套标准化的项目结构

  • 提供了一套标准化的构建流程(编译,测试,打包,发布……)

  • 提供了一套依赖管理机制

Apache Maven 是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。

官网 :Maven – Welcome to Apache Maven

通过上面的描述大家只需要知道Maven是一个工具即可。Apache 是一个开源组织,将来我们会学习很多Apache提供的项目。

1.1 Maven模型

  • 项目对象模型 (Project Object Model)

  • 依赖管理模型(Dependency)

  • 插件(Plugin)

1.2 仓库

大家想想这样的场景,我们创建Maven项目,在项目中使用坐标来指定项目的依赖,那么依赖的jar包到底存储在什么地方呢?其实依赖jar包是存储在我们的本地仓库中。而项目运行时从本地仓库中拿需要的依赖jar包。

仓库分类

  • 本地仓库:自己计算机上的一个目录

  • 中央仓库:由Maven团队维护的全球唯一的仓库

  • 远程仓库(私服):一般由公司团队搭建的私有仓库

    今天我们只学习远程仓库的使用,并不会搭建。

当项目中使用坐标引入对应依赖jar包后,首先会查找本地仓库中是否有对应的jar包:

  • 如果有,则在项目直接引用;

  • 如果没有,则去中央仓库中下载对应的jar包到本地仓库。

如果还可以搭建远程仓库,将来jar包的查找顺序则变为:

本地仓库 --> 远程仓库--> 中央仓库

2. Maven安装配置

  • 解压 apache-maven-x.x.x.rar 既安装完成

建议解压缩到没有中文、特殊字符的路径下。如课程中解压缩到 E:\soft 下。

解压缩后的目录结构如下:

  • bin目录 : 存放的是可执行命令。mvn 命令重点关注。

  • conf目录 :存放Maven的配置文件。settings.xml 配置文件后期需要修改。

  • lib目录 :存放Maven依赖的jar包。Maven也是使用java开发的,所以它也依赖其他的jar包。

2.1 新建本地仓库

在maven解压目录下新建文件夹,如“repository”,用来存储jar包 :

2.2 配置本地仓库

修改 conf/settings.xml 中的 <localRepository> 为一个指定目录作为本地仓库。

<localRepository>E:\soft\apache-maven-3.6.3\repository</localRepository>

2.3 配置系统环境变量

配置环境变量 MAVEN_HOME 为安装路径的bin目录

此电脑 右键 --> 高级系统设置 --> 高级 --> 环境变量

在系统变量处新建一个变量 MAVEN_HOME :

Path 中进行配置 : 

打开命令提示符进行验证,出现如图所示表示安装成功:

2.4 配置阿里云私服

中央仓库在国外,所以下载jar包速度可能比较慢,而阿里公司提供了一个远程仓库,里面基本也都有开源项目的jar包。

修改 conf/settings.xml 中的 <mirrors>标签,为其添加如下子标签:

<mirror>
  <id>nexus-aliyun</id>
  <mirrorOf>central</mirrorOf>
  <name>Nexus aliyun</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>  
    <id>alimaven</id>  
    <name>aliyun maven</name>  
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>          
</mirror>

3. Maven基本使用

3.1 Maven 常用命令

  • compile :编译

  • clean:清理

  • test:测试

  • package:打包

  • install:安装

3.2 Maven 生命周期

Maven 构建项目生命周期描述的是一次构建过程经历经历了多少个事件

Maven 对项目构建的生命周期划分为3套:

  • clean :清理工作。

  • default :核心工作,例如编译,测试,打包,安装等。

  • site : 产生报告,发布站点等。这套声明周期一般不会使用。

同一套生命周期内,执行后边的命令,前面的所有命令会自动执行。

当我们执行 install(安装)命令时,它会先执行 compile命令,再执行 test 命令,再执行 package 命令,最后执行 install 命令。

当我们执行 package (打包)命令时,它会先执行 compile 命令,再执行 test 命令,最后执行 package 命令。

默认的生命周期也有对应的很多命令,其他的一般都不会使用,我们只关注常用的。

4. IDEA使用Maven

以后开发中我们肯定会在高级开发工具中使用Maven管理项目,而我们常用的高级开发工具是IDEA,所以接下来我们会讲解Maven在IDEA中的使用。

4.1 IDEA配置Maven环境

我们需要先在IDEA中配置Maven环境:

  • 选择 IDEA中 File --> Settings

  • Build,Execution,Deployment --> Build Tools -->Maven

  • 设置 IDEA 使用本地安装的 Maven,并修改配置文件路径

4.2 Maven 坐标详解

① 坐标

  • Maven 中的坐标是资源的唯一标识

  • 使用坐标来定义项目或引入项目中需要的依赖

② Maven 坐标主要组成

  • groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)

  • artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)

  • version:定义当前项目版本号

如下图就是使用坐标表示一个项目:

 

注意:

  • 上面所说的资源可以是插件、依赖、当前项目。

  • 我们的项目如果被其他的项目依赖时,也是需要坐标来引入的。

5. 创建Maven工程

5.1 创建Java项目

  • 创建模块,选择Maven,点击Next

  • 填写模块名称,坐标信息,点击finish,创建完成

5.2 导入Maven项目

  • 选择右侧Maven面板,点击 + 号

  • 选中对应项目的pom.xml文件,双击即可

如果右侧没有Maven面板:

打开View --> Appearance --> 勾中 Tool Window Bars
 

6. 配置(生命周期)运行环境

== 个人认为这最大用处就是项目一旦出现异常可以打断点使用DeBug调试 ==

点击Add Configurations(翻译:添加配置) --> 选择Maven

  值得提一嘴的是,这里不同版本IDEA点开界面会有略微变化,但是万变不离其宗、大同小异了。下面是不同版本的截图。

 IDEA 2021.3.3版本:

 配置完成后:

 IDEA 2019.2.4版本:

 配置完成后:

下面是我翻译的配置参数,*通常为必填

* Name:名称(自定义)

- Parameters:参数 | General:常规 | Runner:运行中 | Logs:日志

* Working directory:工作目录

* Command line:命令行

Profiles(separated with space):配置文件(用空格分隔)

        add prefix '-' to disable profile,e.g."-test":添加前缀'-'以禁用配置文件,例如:“-test”

Resolve Workspace artifacts:解决工作区工件

7. 配置 Maven-Helper 插件

  • 选择 IDEA中 File --> Settings --> Plugins

  • 搜索 Maven Helper,点击Install安装,弹出面板中点击Accept

  • 重启 IDEA

安装完该插件后可以通过 选中项目右键进行相关命令操作,如下图所示:

8. 依赖管理

8.1 使用坐标引入jar包的步骤:

  • 在项目的 pom.xml 中编写 <dependencies> 标签

  • 在 <dependencies> 标签中 使用 <dependency> 引入坐标

  • 定义坐标的 groupId,artifactId,version

 

<dependencies>

    <!-- 导入mysql驱动jar包-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.26</version>
    </dependency>

    <!--导入druid德鲁伊jar包-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.12</version>
    </dependency>

</dependencies>
  • 点击刷新按钮,使坐标生效

注意:

8.2 快捷方式导入jar包的坐标

每次需要引入jar包,都去对应的网站进行搜索是比较麻烦的,接下来给大家介绍一种快捷引入坐标的方式

  • 在 pom.xml 中 按 alt + insert,选择 Dependency

 

  • 在弹出的面板中搜索对应坐标(需要稍微等待几秒),然后双击选中对应坐标

  • 点击刷新按钮,使坐标生效

8.3 自动导入设置

上面每次操作都需要点击刷新按钮,让引入的坐标生效。当然我们也可以通过设置让其自动完成

  • 选择 IDEA中 File --> Settings --> Build,Execution,Deployment --> Build Tools

  • 选择 Any changes,右下角点击 ok 即可生效

9. 依赖范围

通过设置坐标的依赖范围(scope),可以设置 对应jar包的作用范围:编译环境、测试环境、运行环境。

如下图所示给 junit 依赖通过 scope 标签指定依赖的作用范围。 那么这个依赖就只能作用在测试环境,其他环境下不能使用。

 scope 所有取值:

依赖范围编译classpath测试classpath运行classpath例子
compileYYYlogback
test-Y-Junit
providedYY-servlet-api
runtime-YYjdbc驱动
systemYY-存储在本地的jar包
  • compile :作用于编译环境、测试环境、运行环境。

  • test : 作用于测试环境。典型的就是Junit坐标,以后使用Junit时,都会将scope指定为该值

  • provided :作用于编译环境、测试环境。我们后面会学习 servlet-api ,在使用它时,必须将 scope 设置为该值,不然运行时就会报错

  • runtime : 作用于测试环境、运行环境。jdbc驱动一般将 scope 设置为该值,当然不设置也没有任何问题

注意:

  • 如果引入坐标不指定 scope 标签时,默认就是 compile 值。以后大部分jar包都是使用默认值。

10. 创建Web项目

10.1 使用模板(骨架)创建

  • 选择JDK版本
  • 单击选中 org.apache.maven.archetypes:maven-archetype-webapp  -->  next下一步

 这里和上面一样,填写后点击next -->

 检查一下路径,如果默认没问题直接Finish -->

之后会自动加载一些配置文件,耐心等待几秒 -->

 加载完毕:

创建好后的目录结构:

补全目录:

  • 右键src--> New --> Directory --> IDEA自动检测到缺少的目录,把两个都添加上即可

  •  右键main --> New --> Directory --> IDEA自动检测到缺少的目录,同样把两个都添加上

最终模块目录结构:

10.2 添加tomcat插件测试

10.2.1 配置pom.xml

① 这里暂时没有用的可以先删掉

② 酷站 Maven Repository(mvnrepository.com),搜索tomcat maven,找到org.apache.tomcat.maven

 ③ 找到 Apache Tomcat Maven Plugin :: Tomcat 7.x --> 点击 tomcat7-maven-plugin

 ④ 选择2.1版本

 ⑤ 单击选项框,复制代码

 

 ⑥ pom.xml中添加代码

<!--构建-->
    <build>
        <!-- 插件组 -->
        <plugins>
            <!--插件-->
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.1</version>
            </plugin>
        </plugins>
    </build>

 

 ⑦ 右侧Maven可以看到新增的tomcat7

⑧ 运行看结果

 

⑨ 进一步配置

<configuration>
    <port>80</port>
    <path>/</path>
</configuration>

效果如下:

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别晃我的可乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值