maven入门基础笔记(2)

1.依赖范围
依赖:就是我们编程时需要使用到的他人为我们提供好的程序,各种框架、各种库、各种API、各种工具包等等都是这样的。对于JAVA编程而言,我们需要将这些程序(打好的JAR包,放到classpath路径下就可以了)Maven为我们提供了三种classpath,编译、运行、测试,所以就进一步的产生了依赖范围这个概念,就是指这三种classpath在什么时候有效,下面是依赖范围(三种classpath有效的性的一个划分)的六种分类:
1.compile:默认范围,编译测试运行都有效
2.provided:在编译和测试时有效
3.runtime:在测试和运行时有效
4.test:只在测试时有效
5.system:在编译和测试时有效,与本机系统关联,可移植性差
6.import:导入的范围,它只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置
2.依赖的传递
传递依赖:简单讲就是间接依赖关系,比如:B依赖A,C依赖B,那么C也就依赖A了,C和A的依赖关系就是传递依赖。
Maven对于依赖的管理是这样的,当在POM.XML文件中发现配置了,某个依赖,就先去自己本地的依赖仓库中去找对应的依赖,如果没找到,就去Maven的中央依赖仓库中去找,如果还是没找到,就会生气报错。
对于项目而言,比如上面的例子A/B/C我们需要在B的POM.XML依赖关系中配置上A的坐标,并且需要对A进行编译、打包、安装到本地仓库等工作,B才能实现对A的依赖。C依赖与B,并且B依赖与A,C的依赖库里会自动的将A项目的jar包也导进来的。如果我们不想这样,那么就需要用到排除依赖这个标签了
exclusion——此标签就是排除对传递依赖的依赖关系的一种方式。
另外,在settings.xml文件中可以设置maven默认jre版本
——使用 profile 标签
创建maven项目时,默认是jdk版本1.5,可修改setting.xml文件,在profiles 的标签下添加下面这段:

<profile>

<id>jdk-1.7</id>

<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.7</jdk>
</activation>

<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>

</profile>

3.依赖冲突
依赖冲突:是指间接依赖关系中依赖同一个依赖,或者同一个依赖的不同版本的情况,此时我们就需要判断到底依赖那一个依赖,如下是选择的两条原则。

如果A通过依赖传递的关系通过不同的路径依赖同一个依赖B。
①:短路优先:
会优先解析路径短的版本,比如:
A -> B -> C -> X(jar)
A -> D -> X(jar) 优先解析短的
②:先声明先优先
如果路径长度相同,则谁先声明,先解析谁——根据在依赖文件POM.XML中声明的先后顺序来选择依赖
4.聚合和继承
聚合:如果项目D依赖项目C,项目C依赖项目B,项目B依赖项目A,我们需要一个个安装这项项目,在Maven中有一种方式可以将多个项目一次性安装,这就是聚合的概念。简单讲就是,需要人工多次操作的,只要MAVEN能理解,一次性告诉他,他就能帮我们做这件单调烦人的事情了。——使用这个标签
继承:多次使用到的依赖,比如:单元测试,没有必要在所有的项目中都引用一下,此时就可以采用继承的方式来实现,先来一个父级的POM.XML然后再继承此POM
Maven聚合:父模块的pom文件修
< package>pom< /package>

                <modules>
                        <module>子模块项目名一</module>
                        <module>子模块项目名二</module>
                </modules>

Maven继承:父模块的pom文件修改
新增properties标签管本
将dependencies标签放入dependencyManagement标签中
有一点要提醒 貌似是个错误,对于继承父类的时候,需要引用
< relativePath> ../maven-parent/pom.xml< /relativePath>
否则会报
Non-resolvable parent POM: Could not find artitact
5.WEB项目开发
1:打开Eclipse
2:创建Maven项目
3:解决Servlet没有生命依赖的问题
4:手工完善Maven约定好的目录结构
5:跟新项目
6:创建项目的输出目录
7:将Maven项目转换为Web项目
8:修改部署时的目录
9:使用package命令打包项目——使用了jetty这个插件(在Maven的中央插件库中寻找)作为Web容器——也可以使用Tomcat作为Web容器,需要在Tomcat的官网上下载一个Tomcat的Maven插件
10:发布项目
11:通过浏器测试、调试项目
6.总结
1、Maven的下载和配置:MAVEN_HOME=Maven的安装路径;在Path中指定Maven的bin目录路径,便于使用Maven;配置环境变量
2、Maven的骨架目录:src/main/java/作为主代码目录;sr/test/java作为测试代码存放;pom.xml用于管理项目依赖和构建过程。
3、常用的Maven命令:achetype.generate自动创建目录骨架
4、仓库和坐标
5、在elipse安装和创建maven项目
6、生命周期,pom.xml以及依赖、聚合、继承
7、Maven插件使用:jetty和tomat等插件。

常用构建命令:
mvn compile 编译
test 测试
package 打包
clean 删除target
install 安装jar包到本地仓库

自动创建目录骨架:
1.archetype:generate 按照提示进行
2.archetype:generate -DgroupId=组织名, 公司网址的反写+项目名
-DartifactId=项目名-模块名
-Dversion=版本号
-Dpackage=代码所存在的包

Maven中的坐标与仓库:
“构件” 通过 “坐标” 作为其唯一的标识
“仓库”:
本地仓库和远程仓库
“镜像仓库”
“更改仓库位置”在conf中的settings.xml中的settings标签中设置 标签进行更改

Maven的生命周期和插件
完整的项目构建过程包括:
清理, 编译,测试, 打包, 集成测试, 验证, 部署
Maven生命周期:
clean 清理项目
default 构建项目(最核心)
site 生成项目站点

猜你喜欢

转载自blog.csdn.net/weixin_39927996/article/details/81462788