一、maven的简介
maven在日常开发中非常常见,以下是maven的市场占比:
maven官网:Maven – Welcome to Apache Maven
Apache Maven是一个软件项目管理和理解工具。基于项目对象模型(POM)的概念,Maven可以从一个中央信息中管理项目的构建、报告和文档。
仓库分类:
本地仓库:主机上的一个文件夹(目录);
中央仓库:由maven团队进行开发维护全球唯一的仓库(https://repo1.maven.apache.org/maven2)
远程仓库(私服):一般由公司团队搭建的私有仓库;
当项目中使用坐标引入相应的jar包后,首先查找本地仓库是否有,
- 如果有,则在项目中maven自动引用;
- 如果没有,就上中央仓库或者私服仓库进行下载到本地仓库然后进行使用;
maven是专门来管理和构建Java项目的工具,它的主要功能有:
1.提供了一套标准化的项目结构;
在不同工具中创建的Java项目结构不同,从一个工具迁移项目时会因为项目的结构不一样而导致出现错误,maven就统一的项目的结构使其结构统一,便于项目的管理。
2.提供了一套标准化的构建流程(编译、测试、打包、发布......);
3.maven提供了一套依赖管理机制;
依赖管理你项目所依赖的第三方资源(jar包、插件)。
依赖于jar完成项目相应的功能,比如JDBC.jar包,Junit.jar等等。
二、maven的安装与配置
点击 Maven – Welcome to Apache Maven进入maven主页,知道download,
2.选择二进制zip存档进行下载;
3.解压zip到你的指定目录;
4.maven环境配置
- 环境变量添加MAVEN_HOME环境变量, 变量值写入maven的安装目录E:\maven\apache-maven-3.8.6(这是我的目录);
- 在系统变量编辑path中新建一个 %MAVEN_HOME%\bin
- 在cmd中使用命令mvn -version进行验证是否配置成功;
5.配置本地仓库;
找到conf目录中的setting文件,打开,
找到 注释的下面代码,然后复制到非注释区;
<localRepository>/path/to/local/repo</localRepository>
在你的文件夹中新建一个目录(文件夹),将文件夹的路径复制在代码中;
默认/path/to/local/repo这个路径其实是在我们c盘下的.m2文件夹下,由于磁盘空间原因我们需要将其进行修改;
保存就可以了;
6.私服配置(maven的alibaba私服仓库配置)
修改maven文件夹下的conf中的 setting.xml中的<mirrors>标签,为其添加如下子标签;
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>https://maven.aliyun.com/repository/public</url>
</mirror>
然后进行保存就可以了。
三、maven的常用命令
1.maven的生命周期
- maven构建项目生命周期描述的是一次构建过程经历多少个时间
- maven对构建项目的生命周期分为3套
- clean:清理工作
- default:核心工作,例如编译、测试、打包、安装等
- site:产生报告、发布站点(不长使用)
default 构建生命周期:
validate(校验) 校验项目是否正确并且所有必要的信息可以完成项目的构建过程,
initialize(初始化) 初始化构建状态,比如设置属性值,
generate-sources(生成源代码) 生成包含在编译阶段中的任何源代码。
. process-sources(处理源代码) 处理源代码,比如说,过滤任意值。
generate-resources(生成资源文件) 生成将会包含在项目包中的资源文件。
process-resources(处理资源文件) 复制和处理资源到目标目录,为打包阶段最好准备。
compile(编译) 编译项目的源代码。
process-classes(处理类文件) 处理编译生成的文件,比如说对Java class文件做字节码改善优化。
generate-test-sources(生成测试源代码) 生成包含在编译阶段中的任何测试源代码。
process-test-sources(处理测试源代码) 处理测试源代码,比如说,过滤任意值。
generate-test-resources(生成测试资源文件) 为测试创建资源文件。
process-test-resources(处理测试资源文件) 复制和处理测试资源到目标目录。
test-compile(编译测试源码) 编译测试源代码到测试目标目录
. process-test-classes(处理测试类文件) 处理测试源码编译生成的文件。
test(测试) 使用合适的单元测试框架运行测试(Juint是其中之一)。
prepare-package(准备打包) 在实际打包之前,执行任何的必要的操作为打包,做准备。
package(打包) 将编译后的代码打包成可分发格式的文件,比如JAR、WAR或者EAR文件。
pre-integration-test(集成测试前) 在执行集成测试前进行必要的动作。比如说,搭建需要的环境。
integration-test(集成测试) 处理和部署项目到可以运行集成测试环境中。
post-integration-test(集成测试后) 在执行集成测试完成后进行必要的动作。比如说,清理集成测试环境。
verify (验证) 运行任意的检查来验证项目包,有效目达到质量标准。
install(安装) 安装项目包,到本地仓库,这样项目包,可以用作其他本地项目的依赖,
deploy(部署) 将最终的项目包,复制到远程仓库中与其他开发者和项目共享,
四、IDEA中配置maven
1.在IDEA中的settings中查找maven,并将maven的安装路径和settings文件路径进行配置;
2.maven坐标详解
- maven中的坐标是资源的唯一标识;
- 使用坐标来定义项目或引入项目中所需要的依赖;
- maven坐标的主要组成:
- groupid:定义当前maven项目隶属组织名称(通常是域名反写)
- artifactid:定义当前项目maven名称(通常是模块名称order-service)
- version:定义当前项目版本号
<groupId>org.example</groupId>
<artifactId>mavendemo1</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
3.创建maven项目(module创建)
填写module名称以及想要目录;选择archetype;
关于archetype的说明如下:
maven提供的41个骨架原型分别是:
1: appfuse-basic-jsf (创建一个基于Hibernate,Spring和JSF的Web应用程序的原型)
2: appfuse-basic-spring(创建一个基于Hibernate,Spring和Spring MVC的Web应用程序的原型)
3: appfuse-basic-struts(创建一个基于Hibernate,Spring和Struts 2的Web应用程序的原型)
4: appfuse-basic-tapestry(创建一个基于Hibernate,Spring 和 Tapestry 4的Web应用程序的原型)
5: appfuse-core(创建一个基于Hibernate,Spring 和 XFire的jar应用程序的原型)
6: appfuse-modular-jsf(创建一个基于Hibernate,Spring和JSF的模块化应用原型)
7: appfuse-modular-spring(创建一个基于Hibernate, Spring 和 Spring MVC 的模块化应用原型)
8: appfuse-modular-struts(创建一个基于Hibernate, Spring 和 Struts 2 的模块化应用原型)
9: appfuse-modular-tapestry (创建一个基于 Hibernate, Spring 和 Tapestry 4 的模块化应用原型)
10: maven-archetype-j2ee-simple(一个简单的J2EE的Java应用程序)
11: maven-archetype-marmalade-mojo(一个Maven的 插件开发项目 using marmalade)
12: maven-archetype-mojo(一个Maven的Java插件开发项目)
13: maven-archetype-portlet(一个简单的portlet应用程序)
14: maven-archetype-profiles()
15:maven-archetype-quickstart()
16: maven-archetype-site-simple(简单的网站生成项目)
17: maven-archetype-site(更复杂的网站项目)
18:maven-archetype-webapp(一个简单的Java Web应用程序)
19: jini-service-archetype(Archetype for Jini service project creation)
20: softeu-archetype-seam(JSF+Facelets+Seam Archetype)
21: softeu-archetype-seam-simple(JSF+Facelets+Seam (无残留) 原型)
22: softeu-archetype-jsf(JSF+Facelets 原型)
23: jpa-maven-archetype(JPA 应用程序)
24: spring-osgi-bundle-archetype(Spring-OSGi 原型)
25: confluence-plugin-archetype(Atlassian 聚合插件原型)
26: jira-plugin-archetype(Atlassian JIRA 插件原型)
27: maven-archetype-har(Hibernate 存档)
28: maven-archetype-sar(JBoss 服务存档)
29: wicket-archetype-quickstart(一个简单的Apache Wicket的项目)
30: scala-archetype-simple(一个简单的scala的项目)
31: lift-archetype-blank(一个 blank/empty liftweb 项目)
32: lift-archetype-basic(基本(liftweb)项目)
33: cocoon-22-archetype-block-plain([http://cocoapacorg2/maven-plugins/])
34: cocoon-22-archetype-block([http://cocoapacorg2/maven-plugins/])
35:cocoon-22-archetype-webapp([http://cocoapacorg2/maven-plugins/])
36: myfaces-archetype-helloworld(使用MyFaces的一个简单的原型)
37: myfaces-archetype-helloworld-facelets(一个使用MyFaces和Facelets的简单原型)
38: myfaces-archetype-trinidad(一个使用MyFaces和Trinidad的简单原型)
39: myfaces-archetype-jsfcomponents(一种使用MyFaces创建定制JSF组件的简单的原型)
40: gmaven-archetype-basic(Groovy的基本原型)
41: gmaven-archetype-mojo(Groovy mojo 原型)
4.快速导入依赖
Alt + insert 点击dependency,然后进行搜索自己想要导入的依赖;
5.依赖范围
通过设置坐标的依赖范围(scope标签),可以设置相应jar包的作用范围:编译环境、测试环境、运行环境;
默认<scope>标签是compile
书写不易,请大家指正