Maven安装、基本使用

安装

1、确保安装了JDK
(1)点击Java 8的安装程序:jdk-8u151-windows-x64.exe,自己选择一个合适的目录一步一步安装即可,会安装jdk和jre两个东西
(2)在windows上配置JAVA_HOME环境变量,值应该是java的安装目录;配置Path环境变量,在里面加入%JAVA_HOME%/bin
(3)验证java是否安装成功:打开windows命令行,运行java -version
❯ java -version java version "1.8.0_261" Java(TM) SE Runtime Environment (build 1.8.0_261-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode) moonlight@CODE  ~ 
2、在官网下载maven的包
我们下载的是:apache-maven-3.5.2-bin.zip
3、解压缩maven的包到某个目录中
4、配置maven的环境变量
配置M2_HOME环境变量为maven的安装目录
在PATH环境变量中,加入%M2_HOME%\bin
5、执行mvn -v命令,检查安装是否完成
Apache Maven 3.5.2 (138edd61fd100ec658bfa2d307c43b76940a5d7d; 2017-10-18T15:58:13+08:00) Maven home: E:\evn\maven\apache-maven-3.5.2\bin\.. Java version: 1.8.0_261, vendor: Oracle Corporation Java home: E:\evn\jdk\1.8\jre Default locale: zh_CN, platform encoding: GBK OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
6、设置MAVEN_OPTS环境变量
maven也是用java写出来的项目,也是要启动jvm来运行maven代码,进而执行各种操作的。因此maven自身的jvm内存大小也是要关注的,如果在构建特别大的项目时,可能会出现maven自身jvm内存不够,导致构建失败,比如OOM的异常。
设置MAVEN_OPTS环境变量,就是设置maven的jvm参数,可以设置为-Xms128m -Xmx512m
7、设置maven的配置文件位置
maven有一个重要的配置文件,就是settings.xml,这个文件默认是在%M2_HOME%/conf目录下面的,但是如果你升级maven的版本,那么可能导致新的安装包的settings文件又是一片空白。
所以一般maven的配置文件都会放在当前用户的目录下的~/.m2/settings.xml中,这样就是对当前用户有效。
(1)mvn help:system
会自动下载一大堆东西,然后的话呢,就会在你当前windows登录用户的,c盘下面的用户文件夹,里面有一个当前登录账号的目录,里面的就是会自动创建一个.m2目录出来
(2)然后将maven安装目录里的conf目录下的settings.xml配置文件拷贝到.m2目录里去,就ok了,作为以后maven全局唯一的配置文件

基本使用

1、使用maven快速创建一个工程
为了加快速度,在settings.xml中加一段配置,用国内阿里云的镜像仓库去下载各种东西
<mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
随便找一个地方创建一个目录(F:\development\workspace),然后在那个目录中执行下面的命令,基于maven创建一个工程
🤣 注意不要用shift + 右键在当前目录打开terminal 而是用CMD命令进入文件夹,否则build failure
mvn archetype:generate -DgroupId=com.zhss.maven -DartifactId=maven-first-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
此时maven会在当前目录下,新建了一个目录,名称就是-DartifactId指定的名称。进入这个maven-first-app目录,就可以看到maven自动给我们初始化好了一个工程对应的目录结构。
notion image
2、maven的约定
这就是基本的maven工程目录结构,其中src/main/java目录包含了这个项目的java源码,src/test/java目录包含了测试代码,pom.xml文件是maven的核心配置文件,是这个项目的Project Object Model。
3、pom.xml初步介绍
pom.xml文件是一个项目最核心的maven配置文件,包含了大量的信息,maven正是基于这里的配置信息来对工程进行构建等管理工作。一个最最基本的pom.xml文件如maven生成的pom.xml所示。
<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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.zhss.maven</groupId> <artifactId>maven-first-app</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>maven-first-app</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
<project>:pom.xml中的顶层元素
<modelVersion>:POM本身的版本号,一般很少变化
<groupId>:创建这个项目的公司或者组织,一般用公司网站后缀,比如com.company,或者cn.company,或者org.zhonghuashishan
<artifactId>:这个项目的唯一标识,一般生成的jar包名称,会是<artifactId>-<version>.<extension>这个格式,比如说myapp-1.0.jar
<packaging>:要用的打包类型,比如jar,war,等等。
<version>:这个项目的版本号
<name>:这个项目用于展示的名称,一般在生成文档的时候使用
<url>:这是这个项目的文档能下载的站点url,一般用于生成文档
<description>:用于项目的描述
3、对项目进行打包
可以认为源代码和测试代码都写好了,然后我们就要自动化运行测试用例+编译+打包,另外的话呢,这个项目有一个junit的依赖,我们期望的时maven可以自动给我们下载和管理这些依赖包
使用mvn package命令,对一个工程进行构建,构建出来一个可以执行的java jar包。
notion image
第一个发现,我们依赖了一个junit包,然后我们不需要自己手工去网上下载对应的jar包了,直接maven自动给我们下载了jar包,不再需要我们自己去管理依赖了,maven自动化管理依赖
第二个发现,运行单元测试、编译、打包,自动化运行了单元测试的用例,自动化把你的java源代码编译成了.class文件,自动化把我们的代码打包成了一个jar包
4、执行打好的jar包
java -cp target/maven-first-app-1.0-SNAPSHOT.jar com.zhss.maven.App

构建过程

项目中的pom.xml:依赖以及如何构建
全局的maven配置,settings.xml
maven的约定:各种约定目录,代码/资源/输出/测试
mvn构建命令
1、maven一定会去考虑settings.xml配置文件里的一些配置
2、maven会去解析你的maven工程的pom.xml
3、maven会去看你的pom.xml里面声明了哪些依赖
4、maven会去本地的仓库里去找有没有那些依赖,比如有没有junit
5、如果本地仓库没有junit,那么就会去远程仓库去找,下载junit。所谓的远程仓库里包含了几乎所有的依赖包,~/.m2/repository,本地仓库
6、远程仓库下载到了junit以后,就会放到本地仓库,缓存起来,供你以后去使用,到%M2_HOME%/lib下面找,maven-model-builder-3.5.2.jar,https://repo.maven.apache.org/maven2/,maven的远程中央仓库
下载依赖 -> 本地仓库 -> 远程仓库
执行构建(清理、编译、打包)
notion image
notion image

eclipse配置maven

我们之前基于最原始的,纯手工的,命令行的方式来体验了一下maven是怎么用的,但是实际开发过程中,肯定不可能直接那样子搞的,有点不太现实
我们一般都是用ide去开发工程的,比如说eclipse,intellij idea,我们现在就要学习如何在eclipse上去安装一个eclipse的maven插件,就是m2eclipse,然后就可以在eclipse上面去开发和运行Maven工程
notion image
file→new→maven→maven project
notion image

eclipse更换默认maven

installation
notion image
user setting

eclipse新建项目

  1. new -> maven -> maven project -> maven archetype quickstart
    1. notion image
      notion image
  1. 设置一下项目的坐标
    1. groupId:com.zhss.maven artifactId:maven-helloworld version:1.0-SNAPSHOT package:com.zhss.maven
      在pom.xml中将junit的依赖从3.8.1版本修改成4.12版本
      在eclipse开发maven项目的话,每次你保存pom.xml,eclipse就会让maven自动去解析pom.xml,然后下载你最新声明的依赖,立即从远程仓库下载到本地仓库
      但是如果纯手工通过archetype去创建maven工程的话,是需要在mvn test package打包的时候,才会去检查pom.xml,才会去下载依赖
      在eclipse,window -> preferences -> 搜索font -> color and font -> basic -> text font,设置字体为courier new
  1. 用eclipse执行maven命令
    1. 右击eclipse工程 -> run configurations -> maven build -> new ->maven-helloworld 选择工程目录中的maven项目clean package
      run运行这个maven命令