(可知meven是我们开发过程中必不可少的一个构建工具,不过还是会有很多人不太了解如何使用,我是先接触的graidle构建工具的后来发现的其前生maven,用起来感觉差不多。)
1.检查%JAVA_HOME% 路径(毕竟maven本身就是java程序,需要JVM)
2.想要搭建maven环境自然少不了先下载maven必要文件:
http://maven.apache.org/download.cgi
(下载压缩包到电脑,现在一个无中文无空格的路径解压,后期避免不必要的麻烦,如:D:\maven\apache-maven-3.3.9)
3.配置maven相关环境变量:
①MAVEN_HOME 或者 M2_HOME (建议选择后者,有利于向下兼容) value: D:\maven\apache-maven-3.3.9
②path value: D:\maven\apache-maven-3.3.9\bin
验证:运行 mvn -v 查看当前maven版本
4.了解maven工程项目结构:
1)特定的目录结构
①根目录:工程名
②src目录 :源码
③pom.xml文件: Maven工程的核心配置文件
④main目录:存放主程序
⑤test目录:存放java源文件
⑦resources目录:存放框架或其他工具的配置文件
2)遵守约定目录
①maven要负责项目的自动化构建,必须知道java源文件保存在哪里。
②如果我们自己定义的东西想让框架工具知道的两种方式:
Ⅰ>以配置的方式明确告诉框架:
在pom.xml文件中声明 <param-value>classpath:spring-context.xml</param>
Ⅱ>遵守框架内部已经存在的约定
3)配置优先级 约定>配置>编码
5.maven常用命令:(dos下运行)
①注意:执行与构建过程相关的macen命令,必须进入pom.xml所在的目录。(编译、打包、测试...)
②常用:
<1>mvn clean :清理
<2>mvn compile : 编译主程序
<3>mvn test-compile : 编译测试程序
<4>mvn test :执行测试
<5>mvn package : 打包
6.maven联网问题
(当maven执行命令需要用到插件使先回到本地仓库查找,没有了才会联网下载)
1)maven本地仓库默认位置:系统当前家目录/.m2/repository (如:C:\Users\lin\.m2\repository)
2)可以修改默认仓库为自己准好的:
①找到maven解压目录\conf\settings.xml
②打开settings.xml文件找到localRepository标签(大约在53行)
③将<localRepository> </localRepository> 从注解中取出来
④修改标签体内容为自己准备好的仓库目录
(如:<localRepository>E:\maven\m2\po</localRepository> 具体情况自己定)
7.maven中的坐标
使用下面三个向量在仓库中定位一个maven工程
①groupid :公司名或组织名倒序+项目名 :(groupid >com.lin.applicationName</groupid >)
②artifactid: 模块名 <artifactid>View</artifactid>
③version: 版本号 <version>1.0.1</version>
④坐标与文件路径关系如:(可以通过 mvn install命令将自己的项目添加到本地仓库中)
8.当新建的项目不符合web项目结构(缺少webIF等目录)
①在项目名上右键 点击properties
②选择Project Facets
先将Dynamic Web Module 前面的 √ 号去掉点击apply,再把重新把Dynamic Web Module 勾上,这时底部出现Further configuration ......
选项,点进去,
只需修改路径就行,Generate web.xml保持勾选状态 ,选择ok, apply,ok 就ok了。
9.当在项目中新建jsp文件时报错,、
方法一:右键项目,build path 将tomcat的运行时环境添加进来就行
方法二:在pom.xml中添加servlet_api的依赖(maven中的解决办法,推荐)
10.依赖的范围
<scope>compile</scope>
<scope>test</scope>
<scope>provide</scope>
compile: 对主程序有效、对测试程序有效、参与打包(相应的jar包会被放到部署的目录下)
test: 对主程序无效、对测试程序有效、不参与打包 (例:junit4.jar)
provided: 对主程序有效、对测试程序有效、不参与打包、不参与部署(不在war包)(如:servlet-api.jar)
11.若想要把自己的项目用依赖引用到新项目中,需要将原项目中pom.xml文件右键运行maven install
这样才会在本地仓库中有相关依赖的文件,否则虽然有引用新项目中代码也不报错,当执行maven命令时不通过。
(对于要进行打包的程序就必须对被依赖项目安装到本地仓库,平常开发过程中可以不安装)
12.依赖是有传递性的,当引入某个依赖是会自动加载其相关联的jar包,如何所含带的jar包不够稳定或者会照成jar包冲突,则需要对不需要的jar包进行排除:
通过<exclusions>标签消除:
<dependency>
..............
<exclusions>
<exclusion>
<groupId>.... </groupId>
<artifactId> ....</artifactId> //写如相应依赖文件的坐标就会自动消除
<exclusion>
</exclusions>
</dependency>
点击对应jar包右键,选择open POM 打开就可以得到对应的坐标值。
13.统一版本控制
自定义标签名为 : atguigu.spring.version的标签,在需要相同版本的依赖出直接在
<version>${标签名}</version> ,在修改版本是只需要修改自定义标签中的版本就可以了,是不是很方便啊?
如:
(当然,这种自定义标签不只是用于同一管理版本,其他属性只要想用的都可以。)
14.由于maven远程仓库默认是在连接的国外的远程仓库,这样往往会让我们在构建项目的时候耗费的时间比较长,还有可能构建失败,这时候我们就该像到将maven的远程仓库改成国内的maven仓库:
找到maven安装目录下的 conf文件夹里的settings.xml文件,找到大约163行,找到:
<mirror>
<id>maven.net.cn</id>
<mirrorOf>central</mirrorOf>
<name>central mirror in china</name>
<url>http://maven.net.cn/content.groups/public</url>
</mirror>
这是在注释内容中,需要将其移出到注释内容外面,我们可以将这改为:
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>