Maven入门和进阶(来自尚硅谷)

本文深入介绍了Maven作为Java项目构建管理工具的重要性,详细阐述了Maven的依赖管理,包括依赖传递、冲突解决,以及构建管理,如生命周期和插件配置。此外,还讲解了在IntelliJ IDEA中创建Maven工程的方法,强调了GAVP属性的配置规则,以及Maven在项目继承和聚合特性方面的应用,帮助开发者更好地理解和运用Maven进行项目管理。
摘要由CSDN通过智能技术生成

Maven简介和快速入门

Maven 介绍

  • Maven 是一款为 Java 项目构建管理、依赖管理的工具(软件),使用 Maven 可以自动化构建、测试、打包和发布项目,大大提高了开发效率和质量

Maven主要作用理解

场景概念
  • 场景一
    • 例如我们项目需要第三方库(依赖),如Druid连接池、MySQL数据库驱动和Jackson等。那么我们可以将需要的依赖项的信息编写到Maven工程的配置文件,Maven软件就会自动下载并复制这些依赖项到项目中,也会自动下载依赖需要的依赖!确保依赖版本正确无冲突和依赖完整
  • 场景二
    • 项目开发完成后,想要将项目打成.war文件,并部署到服务器中运行,使用Maven软件,我们可以通过一行构建命令(mvn package)快速项目构建和打包!节省大量时间
依赖管理
  • Maven 可以管理项目的依赖,包括自动下载所需依赖库、自动下载依赖需要的依赖并且保证版本没有冲突、依赖版本管理等。通过 Maven,我们可以方便地维护项目所依赖的外部库,而我们仅仅需要编写配置即可
构建管理
  • Maven 可以管理项目的编译、测试、打包、部署等构建过程。通过实现标准的构建生命周期,Maven 可以确保每一个构建过程都遵循同样的规则和最佳实践。同时,Maven 的插件机制也使得开发者可以对构建过程进行扩展和定制。主动触发构建,只需要简单的命令操作即可

在这里插入图片描述

IDEA 和 Ecplise 两者构建的格式不同,导致项目不能很好的兼容,此时我们就可以用Maven 来很好的解决这个问题,用IDEA 或 Ecplise 来进行代码提示,Maven进行项目的构建

基于IDEA 的Maven 工程创建

梳理Maven 工程GAVP 属性

Maven工程相对之前的工程,多出一组gavp属性,gav需要我们在创建项目的时指定,p有默认值,后期通过配置文件修改

  • Maven 中的 GAVP 是指 GroupId、ArtifactId、Version、Packaging 等四个属性的缩写,其中前三个是必要的,而 Packaging 属性为可选项。这四个属性主要为每个项目在maven仓库总做一个标识,类似人的《姓-名》。有了具体标识,方便maven软件对项目进行管理和互相引用
GAV遵循以下规则
  • GroupID 格式:com.{公司/BU }.业务线.[子业务线],最多 4 级
说明:{公司/BU} 
例如:alibaba/taobao/tmall/aliexpress 等 BU 一级;
子业务线可选。

正例:
com.taobao.tddl 
com.alibaba.sourcing.multilang  
com.atguigu.java
  • ArtifactID 格式:产品线名-模块名。语义不重复不遗漏,先到仓库中心去查证一下
正例:tc-client / uic-api / tair-tool / bookstore
  • Version版本号格式推荐:主版本号.次版本号.修订号 1.0.0

    • 主版本号:当做了不兼容的 API 修改,或者增加了能改变产品方向的新功能

    • 次版本号:当做了向下兼容的功能性新增(新增类、接口等)

    • 修订号:修复 bug,没有修改方法签名的功能加强,保持 API 兼容性

例如: 初始→1.0.0  修改bug → 1.0.1  功能调整 → 1.1.1等
Packaging 定义规则
  • 指示将项目打包为什么类型的文件,idea根据packaging值,识别maven项目类型

  • packaging 属性为 jar(默认值),代表普通的Java工程,打包以后是.jar结尾的文件

  • packaging 属性为 war,代表Java的web工程,打包以后.war结尾的文件

  • packaging 属性为 pom,代表不会打包,用来做继承的父工程

Maven工程项目结构说明

  • Maven 是一个强大的构建工具,它提供一种标准化的项目结构,可以帮助开发者更容易地管理项目的依赖、构建、测试和发布等任务。以下是 Maven Web 程序的文件结构及每个文件的作用:
|-- pom.xml                               # Maven 项目管理文件 
|-- src
    |-- main                              # 项目主要代码
    |   |-- java                          # Java 源代码目录
    |   |   `-- com/example/myapp         # 开发者代码主目录
    |   |       |-- controller            # 存放 Controller 层代码的目录
    |   |       |-- service               # 存放 Service 层代码的目录
    |   |       |-- dao                   # 存放 DAO 层代码的目录
    |   |       `-- model                 # 存放数据模型的目录
    |   |-- resources                     # 资源目录,存放配置文件、静态资源等
    |   |   |-- log4j.properties          # 日志配置文件
    |   |   |-- spring-mybatis.xml        # Spring Mybatis 配置文件
    |   |   `-- static                    # 存放静态资源的目录
    |   |       |-- css                   # 存放 CSS 文件的目录
    |   |       |-- js                    # 存放 JavaScript 文件的目录
    |   |       `-- images                # 存放图片资源的目录
    |   `-- webapp                        # 存放 WEB 相关配置和资源
    |       |-- WEB-INF                   # 存放 WEB 应用配置文件
    |       |   |-- web.xml               # Web 应用的部署描述文件
    |       |   `-- classes               # 存放编译后的 class 文件
    |       `-- index.html                # Web 应用入口页面
    `-- test                              # 项目测试代码
        |-- java                          # 单元测试目录
        `-- resources                     # 测试资源目录
  • pom.xml:Maven 项目管理文件,用于描述项目的依赖和构建配置等信息
  • src/main/java:存放项目的 Java 源代码
  • src/main/resources:存放项目的资源文件,如配置文件、静态资源等
  • src/main/webapp/WEB-INF:存放 Web 应用的配置文件
  • src/main/webapp/index.html:Web 应用的入口页面
  • src/test/java:存放项目的测试代码
  • src/test/resources:存放测试相关的资源文件,如测试配置文件等

Maven 核心功能依赖和构建管理

依赖管理和配置
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>


    <!--!gav属性 -->
    <!-- 不会改变-->
    <groupId>com.JandyLi</groupId>
    <artifactId>maven-javaee-project-02</artifactId>
  • 37
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

海大皓月

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

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

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

打赏作者

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

抵扣说明:

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

余额充值