MAVEN是什么
maven的功能是合理地叙述项目间的依赖关系(我理解就是利用pom.xml配置jar包,maven通过pom.xml获取项目间的依赖关系)
以下是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.wuhao.maven.quickstart</groupId>
<artifactId>simple</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>simple</name>
<url>http://maven.apache.org</url>
<dependencies> //所要依赖的jar统一放到这个下面,一般说是依赖的构件,其实就是jar
<dependency> //其中的一个jar的依赖属性
<groupId>junit</groupId> //一般为包名,也就是域名的反写
<artifactId>junit</artifactId> //项目名
<version>3.8.1</version>//所需要的jar版本
<scope>test</scope>
</dependency>
</dependencies>
</project>
- 加入的pom.xml文件属于A项目,那么A项目肯定是一个maven项目,通过上面这三个属性能够找到junit对应版本的jar包,那么junit项目肯定也是一个maven项目,junit的maven项目中的pom.xml文件就会有三个标识符,比如像下图这样,然后别的maven项目就能通过这三个属性来找到junit项目的jar包了。所以,在每个创建的maven项目时都会要求写上这三个属性值的。
仓库的概念
通过pom.xml中的配置,就能够获取到想要的jar包(还没讲解如何配置先需要了解一下仓库的概念),但是这些jar是在哪里呢?就是我们从哪里获取到的这些jar包?答案就是仓库。
- 仓库分为:本地仓库,第三方仓库,中央仓库
- 本地仓库:
Maven会将工程中依赖的构件(Jar包)从远程下载到本机一个目录下管理,每个电脑默认的仓库是在 $user/home/.m2/repository下 - 第三方仓库:
第三方仓库,又称为内部中心仓库,也称为私服。
私服:一般是由公司自己设立的,只为本公司内部共享使用。它既可以作为公司内部构件协作和存档,也可作为公用类库镜像缓存,减少在外部访问和下载的频率。(使用私服为了减少对中央仓库的访问,私服可以使用的是局域网,中央仓库必须使用外网,也就是一般公司都会创建这种第三方仓库,保证项目开发时,项目所需用的jar都从该仓库中拿,每个人的版本就都一样。 - 中央仓库
Maven内置了远程公用仓库:http://repo1.maven.org/maven2,这个公共仓库是由Maven自己维护,里面有大量的常用类库,并包含了世界上大部分流行的开源项目构件。目前是以java为主,工程依赖的jar包如果本地仓库没有,默认从中央仓库下载
- 本地仓库:
MAVEN的使用
mvn archetype:create -DgroupId=com.wuhao.maven.quickstart -DartifactId=simple -DarchetypeArtifactId=maven-archetype-quickstart
mvn:核心命令
- archetype:create:创建项目,现在maven高一点的版本都弃用了create命令而使用generate命令了。
- -DgroupId=com.wuhao.maven.quickstart :创建该maven项目时的groupId是什么,该作用在上面已经解释了。一般使用包名的写法。因为包名是用公司的域名的反写,独一无二
- -DartifactId=simple:创建该maven项目时的artifactId是什么,就是项目名称
- -DarchetypeArtifactId=maven-archetype-quickstart:表示创建的是[maven]java项目
命令操作maven java或web项目
- 编译:mvn compile –src/main/java目录java源码编译生成class (target目录下)
- 测试:mvn test –src/test/java 目录编译
- 清理:mvn clean –删除target目录,也就是将class文件等删除
- 打包:mvn package –生成压缩文件:java项目#jar包;web项目#war包,也是放在target目录下
- 安装:mvn install –将压缩文件(jar或者war)上传到本地仓库
- 部署|发布:mvn deploy –将压缩文件上传私服