MAVEN学习总结

一、maven简介
Apache Maven是一个软件项目管理和综合工具。基于项目对象模型(POM)的概念。它是一个基于JAVA平台的自动化构建工具(eclipse是一个半自动化构建工具,只是将Java文件变成class文件)。它的作用主要有两个:1.JAR包管理(a.增加第三方jar包b.jar包之间的依赖管理,自动关联下载所有依赖的jar,并且不会冲突)2.将项目拆分成若干个模块。3.工程聚合、继承、依赖
二、maven安装
1、下载配置maven
a.下载并解压maven
b.配置环境变量
新增环境变量:MAVEN_HOME=maven解压位置
编辑环境变量:PATH="%MAVEN_HOME%\bin"
c.验证:打开cmd输入命令mvn -v,显示maven版本信息则说明安装成功
d.配置本地仓库:修改apachemaven3.2.2\confapachemaven3.2.2\conf\setting.xml
中本地仓库的位置=你自己的仓库位置。
三:maven使用
1.在eclipse中使用maven:
a.在首选项中选择安装的maven版本而不是eclipse自带
b. 配置本地仓库。
2、坐标
Maven的所有构建都是通过坐标进行组织和管理的。Maven的坐标通过5个元素来定义,其中groupId、artifactId、version是必须的,packaging是非必须的(默认为jar)classfier是不能直接定义的。

groupId:定义当前 Maven 项目所属的实际项目,跟 Java 包名类似,通常与域名反向一一对应。
artifactId:定义当前 Maven 项目的一个模块,默认情况下,Maven 生成的构件,其文件名会以 artifactId 开头,如 hibernate-core-3.6.5.Final.jar。
version:定义项目版本。
packaging:定义项目打包方式,如 jar,war,pom,zip ……,默认为 jar。
classifier:定义项目的附属构件,如 hibernate-core-3.6.6.Final-sources.jar,hibernate-core-3.6.6.Final-javadoc.jar,其中 sources 和 javadoc 就是这两个附属构件的 classifier:classifier 不能直接定义,通常由附加的插件帮助生成。
3.依赖
使用 Maven 可以方便的管理依赖,如下是一段在 pom.xml 文件中声明依赖的代码示例:
在这里插入图片描述
Type:依赖类型,对应构建中的packaging,可不声明,默认为jar。
Scope:依赖范围
Optional:依赖是否可选
exclusions:排除传递依赖。
3.1:依赖范围
执行不同的 Maven 命令(mvn package,mvn test,mvn install ……),会使用不同的 classpath,Maven 对应的有三套 classpath:编译classpath、测试classpath,运行classpath。scope 选项的值,决定了该依赖构件会被引入到哪一个 classpath 中。
compile:编译依赖范围,默认值。此选项对编译、测试、运行三种 classpath 都有效,如 hibernate-core-3.6.5.Final.jar,表明在编译、测试、运行的时候都需要该依赖;
test:测试依赖范围。只对测试有效,表明只在测试的时候需要,在编译和运行时将无法使用该类依赖,如 junit;
provided:已提供依赖范围。编译和测试有效,运行无效。如 servlet-api ,在项目运行时,tomcat 等容器已经提供,无需 Maven 重复引入;
runtime:运行时依赖范围。测试和运行有效,编译无效。如 jdbc 驱动实现,编译时只需接口,测试或运行时才需要具体的 jdbc 驱动实现;
system:系统依赖范围。和 provided 依赖范围一致,需要通过 显示指定,且可以引用环境变量;
import:导入依赖范围。使用该选项,通常需要 pom,将目标 pom 的 dependencyManagement 配置导入合并到当前 pom 的 dependencyManagement 元素。
3.2、依赖传递

A–>B B–>C:A–>C的前提是B–>C的范围是compile
3.3、依赖冲突
当多个传递性依赖中有对同一构件不同版本的依赖时:
短路径优先:假如有以下依赖:A -> B -> C ->X(版本 1.0) 和 A -> D -> X(版本 2.0),则优先解析较短路径的 X(版本 2.0);
先声明优先:若路径长度相同,则谁先声明,谁被解析。
3.4、依赖排除
针对依赖冲突中的“短路径优先”,如果我们想使用长路径的依赖怎么办呢?这时可以使用依赖排除 元素,显示排除短路径依赖。在非冲突的情况下,这种方法同样有效
3.5、依赖归类
通常在项目中,我们会同时依赖同一个构件的不同模块,如 spring-orm-3.2.0,spring-context-3.2.0,且多个模块版本相同,为了维护和升级方便,我们可以对其同一管理,这时可以使用到 Maven 属性,类似于变量的概念。

4.继承
如果A继承于B,那么A则拥有B的全部依赖。
继承实现步骤:
A.建立父工程,并且打包方式为pom
B.在父工程的pom中编写父工程的依赖,与其他工程的依赖写在不同,父工程的依赖写在…
C.在子工程中的pom文件中1.用父工程的坐标来声明使用的父工程。(其中gav也可以继承)2.当前工程的pom.xml到父工程的pom.xml的相对路径…/B/pom.xml
D.在子类中需要声明要使用哪些父类的依赖,原因是父类有可能有很多依赖,子类有可能只要一部分。声明的方式是只需要GA就可以了

5.聚合
Maven项目能够识别的是:自身包含、本地仓库中的
Maven2依赖与maven1时,则在执行前必须先将maven1加入到本地仓库(install),之后才能执行maven2.但是当maven2要依赖很多构件的话,那么就要多次执行install,为了解决该问题有了聚合。聚合操作操作可以一次性搞定所有前置工程的install操作。
聚合的使用:
在一个总工程中配置聚合(聚合的配置,只能配置到打包方式为pom的工程中的pom.xml)

聚合:maven将一个大工程拆分成若干个子工程,也可以将子工程合起来。
继承:父–>子工程,可以通过父工程统一管理依赖的版本
6.Maven管理项目
清理:删除编译的结果。
编译:Java---->class
测试:针对于项目中的关键点进行测试
报告:将测试结果进行显示
打包:将项目中包含的多个文件压缩成一个文件,以便安装和部署(java–>jar包、web–>war)
安装:将打成的包放到本地仓库,供其他项目使用
部署:将打成的包放到服务器上准备运行
作用:将Java、js、jsp等各个文件进行筛选、组装,变成一个可运行的项目
仓库:项目jar包获取的地方。
本地仓库:
私服仓库:
中央仓库
Clean命令:删除target目录也就是字节码,并不是清理install存放的本地仓库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大学生参加学科竞赛有着诸多好处,不仅有助于个人综合素质的提升,还能为未来职业发展奠定良好基础。以下是一些分析: 首先,学科竞赛是提高专业知识和技能水平的有效途径。通过参与竞赛,学生不仅能够深入学习相关专业知识,还能够接触到最新的科研成果和技术发展趋势。这有助于拓展学生的学科视野,使其对专业领域有更深刻的理解。在竞赛过程中,学生通常需要解决实际问题,这锻炼了他们独立思考和解决问题的能力。 其次,学科竞赛培养了学生的团队合作精神。许多竞赛项目需要团队协作来完成,这促使学生学会有效地与他人合作、协调分工。在团队合作中,学生们能够学到如何有效沟通、共同制定目标和分工合作,这对于日后进入职场具有重要意义。 此外,学科竞赛是提高学生综合能力的一种途径。竞赛项目通常会涉及到理论知识、实际操作和创新思维等多个方面,要求参赛者具备全面的素质。在竞赛过程中,学生不仅需要展现自己的专业知识,还需要具备创新意识和解决问题的能力。这种全面的综合能力培养对于未来从事各类职业都具有积极作用。 此外,学科竞赛可以为学生提供展示自我、树立信心的机会。通过比赛的舞台,学生有机会展现自己在专业领域的优势,得到他人的认可和赞誉。这对于培养学生的自信心和自我价值感非常重要,有助于他们更加积极主动地投入学习和未来的职业生涯。 最后,学科竞赛对于个人职业发展具有积极的助推作用。在竞赛中脱颖而出的学生通常能够引起企业、研究机构等用人单位的关注。获得竞赛奖项不仅可以作为个人履历的亮点,还可以为进入理想的工作岗位提供有力的支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值