- Maven简介 Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。 Maven 除了以java程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。 Maven这个单词来自于意第绪语(犹太语),意为知识的积累,最初在Jakata Turbine项目中用来简化构建过程。当时有一些项目(有各自Ant build文件),仅有细微的差别,而JAR文件都由CVS来维护。于是希望有一种标准化的方式构建项目,一个清晰的方式定义项目的组成,一个容易的方式发布项目的信息,以及一种简单的方式在多个项目中共享JARs。 通俗点来说,就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包,而这里pom.xml文件对于学maven的人来说,就很熟悉了,比如怎么通过pom.xml的配置就可以获取到jar包呢?pom.xml配置文件从何而来?等等类似问题我们需要搞清楚,如果需要使用pom.xml来获取jar包,那么首先该项目就必须为maven项目,maven项目可以这样去想,就是在java项目和web项目的上面包裹了一层maven,本质上java项目还是java项目,web项目还是web项目,但是包裹了maven之后,就可以使用maven提供的一些功能了(通过pom.xml添加jar包)。 - Maven下载 我们去官网下载最新版本 https://maven.apache.org/download.cgi 国外网站可能访问很慢,为网不好的同学准备了阿里云镜像 https://developer.aliyun.com/packageSearch?word=maven 我们选择一个最新版本下载即可。 下载完之后解压到你想要存放的文件夹如图: - Maven安装
- 新建环境变量Maven_Home:对应maven安装主目录
- 编辑path环境变量追加:%Maven_Home%\bin
- 测试mvn环境变量配置是否成功,在cmd界面,输入:mvn -v
- Maven仓库 maven工程需要配置仓库,本地的项目A项目B等通过maven从第三方仓库(网络上的仓库)下载jar包并存在本地仓库,本地仓库就是本地文件夹,当第二次需要此jar包时则不需要从第三方仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从第三方仓库下载。 Maven仓库类型: 本地仓库:用来存储第三方仓库或者中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找。每个电脑默认的仓库是在 $user.home/.m2/repository下 第三方仓库:如果本地需要插件或者jar包,本地仓库没有,默认去第三方仓库下载。第三方仓库,又称为内部中心仓库,也称为私服 私服:一般是由公司自己设立的,只为本公司内部共享使用。它既可以作为公司内部构件协作和存档,也可作为公用类库镜像缓存,减少在外部访问和下载的频率。(使用私服为了减少对中央仓库的访问 私服可以使用的是局域网,中央仓库必须使用外网 也就是一般公司都会创建这种第三方仓库,保证项目开发时,项目所需用的jar都从该仓库中拿,每个人的版本就都一样。 注意:连接私服,需要单独配置。如果没有配置私服,默认不使用 中央仓库:在maven环境内部内置一个远程仓库地址http://repo1.maven.org/maven2,它是中央仓库,服务于整个互联网,它是由maven自己维护,里面有大量的常用类库,并包含该了世界上大部分流行的开源项目构件。目前是以java为主工程依赖的jar包如果本地仓库没有,默认从中央仓库下载 - Maven配置 新建一个本地仓库文件夹,如图: 大家打开settings.xml,位置目录如下图: 打开之后在这里加上这么一句,来进行本地仓库位置修改: 添加指定阿里云作为我们的中央仓库,不添加的话,默认是国外的中央仓库 (国外网速很慢很慢!) 添加了之后,我们下载东西就会快很多。添加 alimaven * aliyun maven http://maven.aliyun.com/nexus/content/repositories/central/ maven默认jdk修改: 在标签下添加一个标签,修改maven默认的JDK版本。
<profile>
<id>JDK-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
- Idea和eclipse配置maven
目前常用的开发工具如idea,eclipse都自身集成了一个版本的Maven。但是我们习惯了使用自己已经配置好的Maven。 idea配置maven: Maven home directory:此处修改为自己解压的Maven目录 user seting file:勾选Override,修改为自己目录下的settings.xml目录 local repository:修改为自己的本地仓库地址,一般会自动识别。 maven-importing:这个界面我们需要勾选自动导包import maven projects automatically eclipse配置maven: 1:将eclipse使用的Maven修改为自己的。点击add后选择自己Maven的安装目录即可。添加好之后记得勾选我们刚刚添加的maven。 2:将所有的settings修改为自己Maven目录下的conf/settings.xml.点击Update Settings按钮,下面的Local Respository会自动识别出来。点击apply and close - 使用命令行管理maven项目 1:创建maven java项目 自己创建一个文件夹,在该文件夹下按shift+右击,点开使用命令行模式,这样创建的maven[java]项目就在该文件夹下了。命令: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-3.8.4进行命令行创建项目时输入以上命令创建失败,将create改为generate就可以正常创建,版本命令冲突,即在maven3.0.5以上版本舍弃了create,使用generate生成项目 在D:\java\maven-demo下就会生成一个simple的文件,该文件就是我们的maven java项目 maven java项目结构: simple —pom.xml 核心配置,项目根下 —src —main —java java源码目录 —resources java配置文件目录 —test —java 测试源码目录 —resources 测试配置目录
如果该java项目进行了编译,src/main/java下的源代码就会编译成.class文件放入target目录中,target就是输出目录。 2:创建maven web项目 命令:mvn archetype:generate -DgroupId=com.wuhao.maven.quickstart -DartifactId=myWebApp -DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot 其他都差不多,创建maven web项目的话 -DarchetypeArtifactId=maven-archetype-webapp 比创建java项目多了一个 -Dversion=0.01-snapshot, 在创建java项目的时候也可以加上这个,如果不写,会默认帮我们加上1.0-snapshot。 maven web项目结构: pom.xml 核心配置 src/main/java java源码 src/main/resources java配置 src/main/webapp myeclipse web项目中 WebRoot目录 |-- WEB-INF |-- web.xml src/test 测试 target 输出目录 命令操作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)上传到本地仓库
例如使用命令操作maven java项目 注意:使用命令时,必须在maven java项目的根目录下,及可以看到pom.xml 描述:将maven java项目打包上传到本地仓库供别人调用 使用 mvn install布:mvn deploy --将压缩文件上传私服
在本地仓库中查看是否有该项目D:\java\Maven\apache-maven-3.8.4\maven-repository\com\wuhao\maven\quickstart\myWebApp\0.0.1-snapshot通过在本地仓库中的目录可以发现为什么通过groupId、artifactId、version可以定位到仓库中得war包,也可以知道为什么groupId要使用公司域名的反写(因为这样唯一,不会与别的项目重名导致查找到的内容不精确)
maven项目的完整生命周期,当执行生命周期后面命令时,前面步骤的命令自动执行 红色标记字体的意思就是当我们直接使用mvn install命令对项目进行上传至本地仓库时,那么前面所有的步骤将会自动执行,比如源代码的编译,打包等等。
maven java或web项目转换Eclipse工程 mvn eclipse:eclipse mvn eclipse:clean 清楚eclipse设置信息,又从eclipse工程转换为maven原生项目了 …转换IDEA工程 mvn idea:idea mvn idea:clean 同上
pom.xml的依赖关系讲解(重点): 之前一直在使用pom.xml中找jar包最关键的三个属性,groupId、artifactId、version,应该有些印象了,也知道为什么通过这三个能找到对应的jar包,但是没有细讲其中的一些小的知识点,比如上面添加servlet-jar和jsp-jar的依赖时,出现的一些属性就不太懂,所以,这一章节,就将依赖关系全面分析 如何获取坐标(也就是三个关键属性值) 使用百度搜索[从中央仓库拿] 步骤一:百度搜索关键字“maven repository” 步骤二:输入关键字查询获得需要内容,确定需要版本 步骤三、获得坐标
|