一、Maven介绍
官网地址:Maven – Introduction
Maven 是一款为 Java 项目管理构建、依赖管理的工具(软件),使用 Maven 可以自动化构建、测试、打包和发布项目,大大提高了开发效率和质量。
Maven就是一个软件,掌握安装、配置、以及基本功能 (项目构建、依赖管理) 的理解和使用即可!
-
依赖管理:
Maven 可以管理项目的依赖,包括自动下载所需依赖库、自动下载依赖需要的依赖并且保证版本没有冲突、依赖版本管理等。通过 Maven,我们可以方便地维护项目所依赖的外部库,避免版本冲突和转换错误等,而我们仅仅需要编写配置即可。
-
构建管理:
项目构建是指将源代码、配置文件、资源文件等转化为能够运行或部署的应用程序或库的过程
Maven 可以管理项目的编译、测试、打包、部署等构建过程。通过实现标准的构建生命周期,Maven 可以确保每一个构建过程都遵循同样的规则和最佳实践。同时,Maven 的插件机制也使得开发者可以对构建过程进行扩展和定制。主动触发构建,只需要简单的命令操作即可。
二、Maven安装和配置
1. Maven安装
Maven – Maven Releases History
安装条件: maven需要本机安装java环境、必需包含java_home环境变量!
软件安装: 右键解压即可(绿色免安装)
软件结构:
bin:含有Maven的运行脚本
boot:含有plexus-classworlds类加载器框架
conf:含有Maven的核心配置文件
lib:含有Maven运行时所需要的Java类库
LICENSE、NOTICE、README.txt:针对Maven版本,第三方软件等简要介绍
2. Maven环境配置
1.配置MAVEN_HOME
2.配置Path
3.命令测试(cmd窗口)
mvn -v
# 输出版本信息即可,如果错误,请仔细检查环境变量即可!
3.Maven功能配置
我们需要需改maven/conf/settings.xml配置文件,来修改maven的一些默认配置。我们主要休要修改的有三个配置:
1.依赖本地缓存位置(本地仓库位置)
2.maven下载镜像
1.配置本地仓库地址
<!-- localRepository| The path to the local repository maven will use to store artifacts.|| Default: ${user.home}/.m2/repository<localRepository>/path/to/local/repo</localRepository>--><!-- conf/settings.xml 55行 --><localRepository>D:\maven-repository</localRepository>
2.配置国内阿里镜像
<!--在mirrors节点(标签)下添加中央仓库镜像 160行附近-->
<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>
</mirror>
4.IDEA配置本地Maven软件
我们需要将配置好的maven软件,配置到idea开发工具中即可! 注意:idea工具默认自带maven配置软件,但是因为没有修改配置,建议替换成本地配置好的maven!
选择本地maven软件
注意:
1、如果本地仓库地址不变化,只有一个原因,就是maven/conf/settings.xml配置文件编写错误!仔细检查即可!
2、一定保证User settings file对应之前修改的settings.xml的路径,若不一致,选中Override复选框,手动选择配置文件
三、概念梳理Maven工程的GAVP
Maven工程相对之前的项目,多出一组gavp属性,gav需要我们在创建项目的时候指定,p有默认值,我们先行了解下这组属性的含义:
Maven 中的 GAVP 是指 GroupId、ArtifactId、Version、Packaging 等四个属性的缩写,其中前三个是必要的,而 Packaging 属性为可选项。这四个属性主要为每个项目在maven仓库中做一个标识,类似人的姓-名!有了具体标识,方便后期项目之间相互引用依赖等!
GAV遵循一下规则:
1) GroupID 格式(组织ID):com.{公司/BU }.业务线.[子业务线],最多 4 级。
说明:{公司/BU} 例如:alibaba/taobao/tmall/aliexpress 等 BU 一级;子业务线可选。
正例:com.taobao.tddl 或 com.alibaba.sourcing.multilang
2) ArtifactID 格式(模块ID):产品线名-模块名。语义不重复不遗漏,先到仓库中心去查证一下。
正例:tc-client / uic-api / tair-tool / bookstore
3) Version版本号格式推荐:主版本号.次版本号.修订号
1) 主版本号:当做了不兼容的 API 修改,或者增加了能改变产品方向的新功能。
2) 次版本号:当做了向下兼容的功能性新增(新增类、接口等)。
3) 修订号:修复 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.jsp:Web 应用的入口页面。
-
src/test/java:存放项目的测试代码。
-
src/test/resources:存放测试相关的资源文件,如测试配置文件等。
Maven视图功能如下:
五、Maven的命令&Maven可视化方式项目构建
1.Maven的命令
命令 | 描述 |
---|---|
mvn compile | 编译项目,生成target文件 |
mvn package | 打包项目,生成jar或war文件 |
mvn clean | 清理编译或打包后的项目结构 |
mvn install | 打包后上传到maven本地仓库 |
mvn deploy | 只打包,上传到maven私服仓库 |
mvn site | 生成站点 |
mvn test | 执行测试源码 |
命令触发练习:
mvn 命令 命令#清理
mvn clean
#清理,并重新打包
mvn clean package
#执行测试代码
mvn test
2.可视化方式项目构建
注意:打包(package)和安装(install)的区别是什么
打包是将工程打成jar或war文件,保存在target目录下
安装是将当前工程所生成的jar或war文件,安装到本地仓库,会按照坐标保存到指定位置