【maven(一),maven到底是个啥玩意~】 什么是maven_第1页
【maven(一),maven到底是个啥玩意~】 什么是maven_第2页
【maven(一),maven到底是个啥玩意~】 什么是maven_第3页
【maven(一),maven到底是个啥玩意~】 什么是maven_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、本文格式为word版,下载可任意编辑【maven(一),maven到底是个啥玩意】 什么是maven5.6、例子:使用命令操作maven java项目5.7、maven项目的完整生命周期,当执行生命周期后面命令时,前面步骤的命令自动执行5.8、其他命令6.5、例子,将maven web项目发布到tomcat运行 命令:tomcat:run 通过网址即可访问,同时会将该项目上传到本地仓库。 七、pom.xml的依靠关系讲解(重点) 之前始终在使用pom.xml中找jar包最关键的三个属性,groupid、artifactid、version,应当有些印象了,也知道为什么通过这三个能找到对应的ja

2、r包,但是没有细讲其中的一些小的学问点,比如上面添加servlet-jar和jsp-jar的依靠时,消失的一些属性就不太懂,所以,这一章节,就将依靠关系全面分析。 7.1、如何猎取坐标(也就是三个关键属性值) 方式1:使用网站搜寻从.仓库拿 步骤一:百度搜寻关键字“maven repository” 步骤二:输入关键字查询获得需要内容,确定需要版本 步骤三、获得坐标 方式2、使用本地仓库,通过myeclipse获得坐标 上面已经介绍过了如何从本地仓库猎取对应jar,这里在简洁阐述一下 步骤一:添加依靠,pom.xml文件中,右键 步骤二:获得坐标 7.2、依靠(坐标)的常见配置 为了避开不知道

3、说的哪些配置属性,看下面图就明白了,就是dependency下的属性配置,全部有9个,讲其中的7个。 groupid、artifactid、version是依靠的基本坐标,缺一不行,这三个可以不用将,都知道,重要的是除了这三个之外的配置属性需要我们理解 type:依靠的类型,比如是jar包还是war包等 默认为jar,表示依靠的jar包 留意:pom.lastupdated 这个我们在上面添加servlet-jar的时候就遇到过,看到lastupdated的意思是表示使用更新描述信息,占位符作用,通俗点讲,选择该类型,jar包不会被加载进来,只是将该jar包的一些描述信息加载进来,使别的jar

4、包在引用他时,能够看到一些相关的提示信息,仅此而已,所以说他是个占位符,只要记住他的jar包不会被加载进来。 optional:标记依靠是否可选。默认值false 比如struts2中内置了log4j这个记录日志的功能,就是将log4j内嵌入struts2的jar包中,而struts2有没有log4j这个东西都没关系,有它,提示的信息更多,没它,也能够运行,只是提示的信息就相对而言少一些,所以这个时候,就可以对它进行可选操作,想要它就要,不想要,就设置为false。 exclusions:排解传递依靠,解决jar冲突问题 依靠传递的意思就是,a项目 依靠 b项目,b项目 依靠 c项目,当使用a

5、项目时,就会把b也给加载进来,这是传递依靠,依次类推,c也会因此给加载进来。 这个有依靠传递有好处,也有坏处,坏处就是jar包的冲突问题,比如,a 依靠 b(b的版本为1),c 依靠 b(b的版本为2),假如一个项目同时需要a和c,那么a,c都会传递依靠将b给加载进来,问题就在这里,两个b的版本不一样,将两个都加载进去就会引起冲突,这时候就需要使用exclusions这个属性配置了。maven也会有一个机制避开两个都加载进去,maven 默认配置在前面的优先使用,但是我们还是需要使用exclusions来配置更合理,这里使用spring bean 和struts2 spring plugin

6、来举例子说明这个问题并使用exclusions解决这个问题。(spring bean 和 struts2 spring plugin都需要依靠spring-core,但版本不一样) 从本地仓库中找到这两个jar包 maven自己的解决方案如下 maven 默认配置在前面的优先使用,下面是证明 先将spring-beans加载进去的,所以会将spring-beans依靠的spring-core的版本加载进来。先将struts2-spring-plugin加载进来,那么就会将其依靠的spring-core的版本加载进来 使用exclusions来配置 即使struts2-spring-plugin

7、 配置在前面,也需要使用3.2.0版本。则需要为struts2-spring-plugin 排解依靠(不使用3.0.5依靠)留意:这样,就将struts2-spring-plugin依靠的spring-core的版本排解依靠了,也就是该依靠的spring-core不会在加载进来,查看代码,看是否符合要求,假如不符合要求,需要手动的修改scope:依靠范围,意思就是通过pom.xml加载进来的jar包,来什么范围内使用生效,范围包括编译时,运行时,测试时 compile:默认值,假如选择此值,表示编译、测试和运行都使用当前jar test:表示只在测试时当前jar生效,在别的范围内就不能使用该j

8、ar包。例如:junit 。此处不写也不报错,由于默认是compile,compile包扩了测试 runtime,表示测试和运行时使用当前jar,编译时不用该jar包。例如:jdbc驱动。jdbc驱动,在编译时(也就是我们写代码的时候都是采纳接口编程,压根就没使用到jdbc驱动包内任何东西,只有在运行时才用的到,所以这个是典型的使用runtime这个值的例子),此处不写也不报错,理由同上 provided,表示编译和测试时使用当前jar,运行时不在使用该jar了。例如:servlet-api、jsp-api等。【必需填写】 什么意思呢? 在我们以前创建web工程,编写servlet或者jsp时

9、,就没导入过jar包把,由于myeclipse或者别的ide帮我们供应了这两个jar包,内置了,所以我们在编译期测试期使用servlet都不会报缺少jar包的错误,而在运行时期,离开了myeclipse或别的ide,就相当于缺失了这两个jar包,但此时tomcat又会帮我们供应这两个jar,以便我们不会报错,所以,这两个很特别。看图 1、开发阶段(myeclipse供应),看下图以此证明我们说的 java web 5.0项目: java web 6.0项目: 2、运行阶段(tomcat供应) 所以,依据这个特点,假如使用maven开发项目,就不是web项目了,那么myeclipse就不会在给我

10、们供应这两个jar包,我们就必需自己手动通过坐标从仓库中猎取,但是针对上面的分析,当运行的时候,tomcat会帮我们供应这两个jar包,所以我们自己从仓库中猎取的jar包就不能和tomcat中的冲突,那么就正好可以通过provided这个属性,来设置这两个jar的作用范围,就是在变异时期和测试时期生效即可。 这个例子就可以解释上面创建maven web时产生的错误和解决方案了。 system:表示我们自己手动加入的jar包,不属于maven仓库(本地,第三方等),属于别得类库的这样的jar包,只在编译和测试期生效,运行时无效。一般不用 7.3、依靠调整原则 这个就是maven解决传递依靠时jar包冲突问题的方法,根据两种原则,上面已经介绍了一种了,就是下面的其次原则 1、第一原则:路径近者优先原则 a->b->c->d->x(1.6) e->d->x(2.0) 使用x(2.0),由于其路径更近 2、其次原则:第一声明者优先原则。就是假如路径相同,maven 默认配置在前面的优先使用 a->b -> x(1.6) c->d-> x(2.0) 这样就是路径相同,那么假如a在前面,c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论