Maven什么是?

Maven什么是?

Maven一个小整理


什么是maven?


Maven是apache下的一个开源项目,是纯Java开发的并且只用于管理Java项目;通俗点讲就是,当我们有多个项目时其中引用的各种架包会比较多,而且会有很高的重复率,没创建一个项目都要手动导入各种各样的jar包,这样对于实际操作来说比较不友好,而maven这个东西就是为了解决这种问题的,maven这个中间件设计的理念就相当于是个仓库,仓库放的就是各种各样的架包,供所每个所需要jar文件的项目来调用其中的jar文件;

使用maven的好处


Maven中使用约定,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下,这些目录都有明确的约定,对于项目的合作开发、后期维护等很方便;
Maven的每一个动作都拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程(maven有自己的一套操作命令,简单实用)
只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮我们处理其他事情,为我们省略了很多问题,不需要我们理会太多开发以外的其他问题;
使用Maven可以进行项目高度自动化构建,依赖管理(这是使用Maven最大的好处),仓库管理。
可跨平台
应用于大型项目,maven分模块开发,提高开发效率。

依赖管理


依赖指的是jar包之间的相互依赖,比如我们搭建一个Struts2的开发框架时,光有struts2-core-2.3.16.3.jar这个jar包是不行的,struts2-core-2.3.16.3.jar还依赖其它的jar包,依赖管理指的就是使用Maven来管理项目中使用到的jar包,Maven管理的方式就是自动下载项目所需要的jar包,统一管理jar包之间的依赖关系。

项目构建过程


项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程。

传统项目与maven项目管理对比


传统项目
需要人工添加相关第三方的jar到项目中,这样可能存在的问题:
没有对jar包版本的统一进行管理,容易造成版本冲突。
jar包不容易找到
jar包添加到工程中导致工程过大
Maven项目
maven项目不需要手工把jar包添加到项目中,开发人员只需维护pom.xml配置文件,在配置文件中维护jar包的坐,maven会自动从仓库中下载jar包、运行。
好处:
pom.xml中版本统一,不会出现冲突问题
maven团队维护jar文件,当前使用的jar包,maven仓库中都有,使用非常方便

Maven作用域


 (1) compile   默认就是compile,什么都不配置也就是意味着compile。compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。

(2) test scope为test表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。比较典型的如junit。
  (3) runntime runntime表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过编译而已,说实话在终端的项目(非开源,企业内部系统)中,和compile区别不是很大。Oracle jdbc驱动架包就是一个很好的例子,一般scope为runntime。
  (4) provided provided意味着打包的时候可以不用包进去,别的设施(Web Container)会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是在打包阶段做了exclude的动作。
  (5) system 从参与度来说,也provided相同,不过被依赖项不会从maven仓库抓,而是从本地文件系统拿,一定需要配合systemPath属性使用。

Maven的生命周期


每个生命周期的各个环节都是由各种插件完成!!!
Maven有三个相互独立的生命周期(Maven的这三个生命周期不能看成一个整体)
mvn clean:清理编译的项目
mvn compile:编译项目
mvn test:测试项目(运行测试类)
mvn package:负责将我们的项目打包
mvn install:将这个项目安装到仓库中

Clean生命周期(Clean Lifecycle)
Clean Lifecycle 在进行真正的构建之前进行一些清理工作。Clean生命周期一共包含了三个阶段:
pre-clean 执行一些需要在clean之前完成的工作
clean 移除所有上一次构建生成的文件
post-clean 执行一些需要在clean之后立刻完成的工作

Default生命周期(Default Lifecycle)
Default Lifecycle是构建的核心部分,编译,测试,打包,部署等等,Default生命周期是Maven生命周期中最重要的一个,绝大部分工作都发生在这个生命周期中。

  一些比较重要和常用的阶段:
 compile 编译项目的源代码
 install 将包安装至本地仓库,以让其它项目依赖。
 deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享
 process-test-resources 复制并处理资源文件,至目标测试目录
 process-resources 复制并处理资源文件,至目标目录,准备打包
 test-compile 编译测试源代码
 test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署
 package 接受编译好的代码,打包成可发布的格式,如 JAR

Site生命周期(Site Lifecycle)
Site Lifecycle 生成项目报告,站点,发布站点,站点的文档(站点信息,依赖…)。 Site生命周期,生成站点信息四个阶段:

   pre-site 执行一些需要在生成站点文档之前完成的工作
   site 生成项目的站点文档
   post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
   site-deploy 将生成的站点文档部署到特定的服务器上
发布了12 篇原创文章 · 获赞 0 · 访问量 332

猜你喜欢

转载自blog.csdn.net/qq_41970133/article/details/103995450
今日推荐