图片-小白之家
图片-小白之家
图片-小白之家
图片-小白之家

maven是什么(Maven项目管理工具介绍)

关于大数据开发的Maven可谓是一个略微复杂的构成,从基础概念到它的详细用处都可谓是有满满的干货知识。这里先用一句话来进行归纳,Maven是一个项目办理工具,能够对Java项目进行构建、依靠办理,是一个主动化构建工具。

一、什么是Maven

Maven,用于Java项目的构建,依靠办理,项目信息办理的项目办理工具.是Apache安排旗下的开源项目.它的核心功用是一个具有跨渠道特性的构建工具,协助咱们主动化构建,并供给一个完好的优化的构建生命周期模型,和构建任务所需的基础组件/插件.它仍是一个依靠办理工具和项目信息办理工具,便利开发人员更好的办理依靠与防止项目信息紊乱等问题.除此之外还供给了一套规范的约定规则,减轻不同项目的差异性.

二、Maven的效果

效果一:

个人理解maven主要是用来处理导入java类依靠的jar,编译java项目主要问题。(最早手动导入jar,运用Ant之类的编译java项目)

以pom.xml文件中dependency特点办理依靠的jar包,而jar包包含class文件和一些必要的资源文件。

当然它能够构建项目,办理依靠,生成一些简略的单元测验报告,像现在公司的持续集成都广泛的运用maven,当你接触一些项目今后你就会有更深的领会。

效果二:

比方之前项目导入jar。是通过copy方法导入项目中,并且还会存在jar之间的依靠和冲突。而maven处理了这些问题,只是网速欠好的时分有点麻烦。只需求下载-bin.zip就能够了。

效果三:

jar包办理,防止jar之间依靠起冲突。小组之间树立个私服务,大家都用通用的maven配置文件,不必自己手动去下载jar,pom文件会主动办理下载好的jar包。

效果四:

Maven是基于项目目标模型,能够通过一小段描绘信息来办理项目的构建,报告和文档的软件项目办理工具。Maven能够很便利的帮你办理项目报告,生成站点,办理jar文件,等等。例如:项目开发中第三方jar引证的问题,开发进程中合作成员引证的jar版别或许不同,还有或许重复引证相同jar的不同版别,运用maven关联jar就能够配置引证jar的版别,防止冲突。

三、Maven坐标系统

Maven构件:指的是平常项目打包完成后的的一些jar,war等文件.

Maven坐标为各种构件引入了次序,任何一个构件都必须明确界说自己的唯一坐标;而一组Maven坐标便是通过以下一组元素界说的:

groupId:界说当时Maven项目从属的实践项目

artifactId:界说实践项目中的一个Maven模块/项目,引荐运用groupId作为artifactId的前缀

version:界说Maven模块/项目所在的版别,Maven界说了一套完好的版别规范

packaging:界说Maven模块/项目的打包方法

classifier:协助界说一些与主构件对应的附属构件

Maven库房便是基于Maven的坐标系统

四、Maven库房

得益于Maven的坐标机制,任何Maven项目运用的任何一个”构件”的方法都是相同的;在此基础上,Maven能够在某个位置一致贮存所有Maven项目共享的”构件”,这便是库房;因为库房,所以Maven项目不再需求各自贮存依靠的”构件”,转而只需声明这些依靠的坐标,在需求的时分,Maven会主动依据坐标找到库房中的”构件”,并运用它们.

库房的分类有两种,本地库房与长途库房;当Maven依据坐标寻觅”构件”的时分,Maven会先查看本地库房,假如本地库房存在此构件,则直接运用;假如本地库房不存在此”构件”,或需求查看是否有更新的版别,Maven就会去长途库房查找,当发现所需的”构件”后,就会下载到本地库房后再运用;假如终究本地库房与长途库房都无法找到所需求的”构件”时,Maven就会报错.

五、Maven构建概念及进程

(1)构建并不是创立,创立一个工程并不等于构建一个项目,那么咱们就从如下三个方面来了解构建。

1.纯Java代码

Java是一门编译型言语,.java扩展名的源文件需求编译成.class扩展名的字节码文件才能够履行。所以编写任何Java代码想要履行的话就必须通过编译得到对应的.class文件。

2.Web工程

当咱们需求通过浏览器访问Java程序时就必须将包含Java程序的Web工程编译的成果“拿”到服务器上的指定目录下,并启动服务器才行。这个“拿”的进程咱们叫布置。

咱们能够这样理解,为编译的WEB工程是米,而编译好的WEB工程是饭,这个编译进程便是生米煮成熟饭。

3.实践项目

在实践项目中整合第三方结构,Web工程中不仅包含了Java程序和JSP页面、图片等静态资源之外,还包含了第三方结构的jar包以及各种各样的配置文件。所有这些资源都必须按照正确的目录结构布置到服务器上,项目才能够运转。

因而,构建便是以咱们编写的Java代码、结构配置文件、国际化等其他资源文件、JSP页面和图片等静态资源作为“原材料”,去“出产”出一个能够运转的项目的进程。

(2)构建环节

1.整理:删除以前的编译成果,为重新编译做好准备。

2.编译:将Java源程序编译为字节码文件。

3.测验:针对项目中的要害点进行测验,保证项目在迭代开发进程中要害点的正确性。

4.报告:在每一次测验后以规范的格式记载和展示测验成果。

5.打包:将一个包含许多文件的工程封装为一个压缩文件用于装置或布置。Java工程对应jar包,Web工程对应war包。

6.装置:在Maven环境下特指将打包的成果——jar包或war包装置到本地库房中。

7.布置:将打包的成果布置到长途库房或将war包布置到服务器上运转。
图片[1]-maven是什么(Maven项目管理工具介绍)-小白之家,Maven项目管理工具介绍,Maven的一个核心作用便是办理项目的依靠,这个依靠就能够了解成jar包。

有了它就不必再去网上一个一个找jar包了,直接增加jar包的坐标就好。

那么其具体怎么导入呢?

一、依靠办理

在maven工程中,有一个核心装备文件pom.xml,在该装备文件中即能够引进依靠。

1本地库房引进

标签就比如曾经的lib包,标签也就对应着jar包。

其中关于标签名:

groupId:界说当时项目(jar包)隶属的实践项目组。artifactId:界说当时项目(jar包)的名称。version:界说当时项目(jar包)的版别号。正是由于有了version这个标签的存在,经过该标签一致版别起来也方便了很多。

由于这两种依靠很常见,我本地库房中已经有了,所以导入依靠时根据提示就能够导入。

此外在开发工具中也能够直接查找依靠:

运用快捷键:Alt+Insert,能够查找对应的依靠,点击即能够引进依靠。

不过上述这两种情况,都是本地库房中存在对应的依靠才能够被查找到。

假如本地库房没有,就需求运用到私服了。

2私服引进

昨天在装备文件夹中就装备过对应的私服。

运用的是阿里云私服,将其途径仿制下来访问,能够访问到如下界面:

经过文件查找功用能够查找到需求的依靠,比如我这边查找的是druid。

找到对应的jar包点击,能够下载对应的jar包,但是假如是运用maven,不必下载。

将依靠仿制后在项目中引进即可。

在引进依靠后开发工具右下角会呈现如下提示:

点击importChanges就完成依靠的引进了。

一起也会将该依靠下载到本地库房中。

二、依靠装备

在引进需求运用的依靠后,有时分不能直接就运用当时的依靠,需求对这些依靠进行装备。

1依靠规模设置

maven的运转环境有三种:编译classpath,测验classpath,运转classpath。

而依靠规模设置便是用来操控依靠与这三种classpath之间的关系的。

其中依靠规模都是在标签中装备:

①编译依靠规模compile

假如没有指定,默许便是这种依靠规模。

运用此依靠规模的Maven依靠,对于编译、测验、运转三种classpath都有用。

典型的比如便是jdbcTemplate,它在编译、测验和运转代码时都需求。

②测验依靠规模test

运用此依靠规模的Maven依靠,只对测验classpath有用。

在编译和运转项目期间都不需求运用此依靠。

典型的比如便是Junit,它只在测验代码时有用。

③已提供依靠规模:provided

运用此依靠规模的maven依靠在编译和测验classpath有用,但运转时无效。

典型的比如便是servlet-api。

编译和测验的时分需求运用servlet-api中的办法,但是运用tomcat运转项目的时分不需求。

咱们查看下Tomcat的文件途径,会发现其本身就自带了该jar包。

所以Tomcat在运转期间会自动提供这个依靠。

假如咱们引进的该依靠在运转时也有用,一旦和Tomcat自带的版别不一样,就会呈现冲突。

④运转时依靠规模:runtime

运用此依靠规模的maven依靠对于测验和运转classpath有用,但在编译时无效。

典型的比如是JDBC驱动实现。

项目中只要在履行测验或者运转项目的时分才需求该依靠。

⑤系统依靠规模:system

该依靠和provided依靠规模完全一致。

但是此依靠不是来自Maven的中心库房。

运用system规模的依靠时有必要经过标签指定依靠文件的途径。

典型的比如是Oracle的驱动包。

该依靠从中心库房无法下载,需求先将Oracle的驱动包下载到本地,再经过本地途径引进。

该依靠规模了解即可,运用不常见。

留意:

上述编译都是指对项目主代码的编译,不包含对于测验代码的编译。

2依靠版别保护

事实上,在一个项目中,需求引进的依靠是很多的,可能有几十个。

而各个依靠又有不同的版别,为了一致保护版别,能够专门将依靠的版别抽取出来一致办理:

在标签中放入各个依靠的版别号。

版别标签命名格式为依靠名.version。

在对应的依靠中运用${}引进前面界说好的版别即可。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容

图片-小白之家
图片-小白之家