maven是一款管理项目生命周期的工具,核心的内容(project object model 项目对象模型)POM
1、项目生命周期
1.1构建
eclipse、myeclipse、idea等不同环境下统一项目环境
<!--生成eclipse项目-->
mvn eclipse:eclipse 生成eclipse环境
mvn eclipse:clean 删除eclipse环境
1.2依赖管理
引入第三方内容
1、下载依赖
2、版本维护:
源网站包—>maven中央仓库—>各私服仓库(huawei、ali)—>本地仓库
1.3代码编写
面向cv编程,面向bd编程
1.4单元测试
junit(保证项目的健壮)
1.5打包部署
开发环境、测试环境、生产环境
2、下载安装配置运行
2.1下载
maven下载链接: Maven – Download Apache Maven
2.2安装
解压到指定非中文位置。
2.3配置环境变量
path直接加上maven安装的位置的bin目录,比如我的是E:\tool\apache-maven-3.8.1\bin
2.4运行
打开命令提示符,用管理员运行,输入mvn -v,如下成功。
C:\Users>mvn -v
Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)
Maven home: E:\tool\apache-maven-3.8.1\bin\..
Java version: 17.0.1, vendor: Oracle Corporation, runtime: E:\java17
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
2.5、常用命令
<!--创建 Java 项目-->
mvn archetype:create
-DgroupId=com.javakc
-DartifactId=web1
<!--创建 Web 项目-->
mvn archetype:create
-DgroupId=com.javakc
-DartifactId=web1
-DarchetypeArtifactId=maven-archetype-webapp
<!--自动构建项目-->
mvn archetype:generate
<!--编译源代码-->
mvn compile
<!--测试源代码-->
mvn test
<!--编译测试代码-->
mvn test-compile
<!--项目打包-->
mvn package
<!--清理项目-->
mvn clean
3、仓库配置
构建项目需要模板,会先从本地仓库找,如果未找到就去从私服仓库下载。如果未配置私服仓库就会默认从maven中央仓库下载。由于maven中央仓库为外网,下载环境不稳定,故需要配置私服仓库来提升下载速度。在命令提示符中输入— mvn archetype:generate。
3.1本地仓库
默认位置为:C:\Users\~\.m2\repository
自定义位置:需要修改conf\settings.xml配置文件
<localRepository>自定义路径</localRepository>
3.2私服仓库
需要修改conf\settings.xml配置文件
<mirrors>
<!-- 址 华为镜像地址 -->
<mirror>
<id>huaweicloud</id>
<mirrorOf>*</mirrorOf>
<url>https://repo.huaweicloud.com/repository/maven/</url>
</mirror>
- <!-- 址 阿里云镜像地址 -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>
</mirrors>
4、项目构建
4.1、项目类型
java项目:org.apche.maven.archetypes:maven-archetype-quickstart
web项目:org.apche.maven.archetypes:maven-archetype-webapp
4.2、目录结构
src源码目录
main核心目录——java核心目录 resources配置目录
test测试目录——java测试类目录 resources测试配置目录
target编译目录
pom.xml maven项目核心配置文件
配置idea
5、Maven创建项目
5.1、生命周期
Maven坐标为各种构件引入了秩序,任何一个坐标都必须明确定义自己的坐标,而一组Maven坐标是通过一些元素定义的。
5.2、引入依赖
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
5.3、maven坐标
<!-- 组织 -->
<groupId>com.zhang</groupId>
<!-- 项目名称 -->
<artifactId>maven_web</artifactId>
<!-- 版本号-->
<version>1.0.0</version>
<!-- 打包类型 -->
<packaging>war</packaging>
版本号命名方式:[主版本号.次版本号.修订版本号]
主版本号:产品方向改变,或者大规模 API 不兼容,或者架构不兼容升级。
次版本号:保持相对兼容性,增加主要功能特性,影响范围极小的 API 不兼容修改。 修订版本号:保持完全兼容性,修复 BUG、新增次要功能特性等。
5.4、scope作用域
compile:默认值,他表示被依赖的项目从参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖,打包的时候通常需要包含进去。
test:依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包(Junit)
runtime:表示被依赖的项目无需参与项目的编译,不过后期的测试和运行周期需要其参与,与comlile相比,跳过了编译而已。例如JDBC驱动,使用运行和测试阶段。
provided:打包的时候可以不用包进去,别的设施会提供。事实上该依赖可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude操作。
system:从参与度来说和provided相同,不过被依赖项不会从maven仓库下载,而是从本地文件系统拿。需要添加systemPath的属性来定义路径