Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。
在多个开发团队环境时,Maven可以设置按标准在非常短的时间里完成配置工作。由于大部分项目的设置都很简单,并且可重复使用,Maven让开发人员的工作更轻松,同时创建报表,检查,构建和测试自动化设置。
Maven提供了开发人员的方式来管理:
Builds
Documentation
Reporting
Dependencies
SCMs
Releases
Distribution
mailing list
概括地说,Maven简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的无缝连接。 Maven增加可重用性并负责建立相关的任务。

一、Maven有哪些优点和缺点

优点如下:

  1. 简化了项目依赖管理:
  2. 易于上手,对于新手可能一个"mvn clean package"命令就可能满足他的工作
  3. 便于与持续集成工具(jenkins)整合
  4. 便于项目升级,无论是项目本身升级还是项目使用的依赖升级。
  5. 有助于多模块项目的开发,一个模块开发好后,发布到仓库,依赖该模块时可以直接从仓库更新,而不用自己去编译。
  6. maven有很多插件,便于功能扩展,比如生产站点,自动发布版本等

缺点如下:

  1. maven是一个庞大的构建系统,学习难度大
  2. maven采用约定优于配置的策略(convention over configuration),虽然上手容易,但是一旦出了问题,难于调试。
  3. 当依赖很多时,m2eclipse 老是搞得Eclipse很卡。
  4. 中国的网络环境差,很多repository无法访问,比如google code, jboss 仓库无法访问等。

二、Maven坐标

一般maven使用[groupID,artifactId,version,packaging]来表示一个项目的某个版本,有时还会使用classifier来表示项目的附属构建,常见的附属构建有javadoc和sources包。

三、Maven常见的依赖范围有哪些?

  1. compile:编译依赖,默认的依赖方式,在编译(编译项目和编译测试用例),运行测试用例,运行(项目实际运行)三个阶段都有效,典型地有spring-core等jar。
  2. test:测试依赖,只在编译测试用例和运行测试用例有效,典型地有JUnit。
  3. provided:对于编译和测试有效,不会打包进发布包中,典型的例子为servlet-api,一般的web工程运行时都使用容器的servlet-api。
  4. runtime:只在运行测试用例和实际运行时有效,典型地是jdbc驱动jar包。
  5. system: 不从maven仓库获取该jar,而是通过systemPath指定该jar的路径。
  6. import: 用于一个dependencyManagement对另一个dependencyManagement的继承。

四、Maven的生命周期

maven有三套生命周期,分别为:

1、clean 周期:主要用于清理上一次构建产生的文件,可以理解为删除target目录

2、默认周期,
主要阶段包含:

  1. process-resources 默认处理src/test/resources/下的文件,将其输出到测试的classpath目录中,
  2. compile 编译src/main/java下的java文件,产生对应的class,
  3. process-test-resources 默认处理src/test/resources/下的文件,将其输出到测试的classpath目录中,
  4. test-compile 编译src/test/java下的java文件,产生对应的class,
  5. test 运行测试用例,
  6. package 打包构件,即生成对应的jar, war等,
  7. install将构件部署到本地仓库,
  8. deploy 部署构件到远程仓库

3、site周期

主要阶段包含

  • site 产生项目的站点文档
  • site-deploy 将项目的站点文档部署到服务器

https://blog.csdn.net/wfh6732/article/details/62089914/

https://segmentfault.com/a/1190000013582912?utm_source=tag-newest/*&^%$

关于Maven面试题相关推荐

  1. Maven面试题及答案

    1.Maven有哪些优点和缺点 优点: 1.简化项目依赖管理 2.方便与持续集成工具(Jenkins)整合 3.有助于多模块项目开发,比如一个模块开发好后发布到仓库,依赖该模块时可以直接从远程仓库更新 ...

  2. 面试官:这是我准备的一些java后端maven面试题

    文章目录 Maven 的生命周期是什么?在每个生命周期阶段中,Maven 做了什么? 什么是 Maven 坐标?它由哪些元素组成? 如何将本地存储库中的依赖项添加到 Maven 项目中? Maven ...

  3. Maven面试题及答案(18题)

    一.Maven有哪些优点和缺点 优点如下: 1.简化了项目依赖管理: 2.易于上手,对于新手可能一个"mvn clean package"命令就可能满足他的工作 3.便于与持续集 ...

  4. Maven面试题总结

    一.Maven有哪些优点和缺点 优点如下: 简化了项目构建.依赖管理: 易于上手,对于新手可能一个"mvn clean package"命令就可能满足他的工作 便于与持续集成工具( ...

  5. Git、Maven 面试题

    问题 答案 Git和SVN有什么区别? Git是一个分布式的版本控制工具:SVN 是集中版本控制工具 客户端可以在其本地系统上克隆整个存储库:版本历史记录存储在服务器端存储库中 即使离线也可以提交:只 ...

  6. Maven面试题大全及答案

    1.什么是Maven? Maven使用项目对象模型(POM)的概念,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. Maven 除了以程序构建能力为特色之外,还提供高级项目管理 ...

  7. Maven基本面试题问答

    Maven 是什么? Maven 主要服务于基于 Java 平台的项目构建.依赖管理和项目信息管理. Maven有哪些优点和缺点 简化了项目依赖管理: 易于上手,对于新手可能一个"mvn c ...

  8. git、maven面试题大全

    https://blog.csdn.net/nobody_1/article/details/88956315 https://www.cnblogs.com/sgh1023/p/10900130.h ...

  9. java面试题有哪些?

    肝了一个月的面试题终于来啦,大家开心不. 2022年最新Java面试题整理,全网最全一份,包含各个技术栈,Java基础,Java集合,多线程,Java异常,spring,spring MVC,spri ...

最新文章

  1. python3.6安装-python3.6的安装及注意事项
  2. JavaScript学习笔记(十)——学习心得与经验小结
  3. Fiddler模拟请求报文
  4. 《Java练习题》Java编程题合集(转载)
  5. JAVA根据word模板动态生成word(SpringBoot项目)
  6. 盘点40种常用的芯片封装技术
  7. 高仿京东分类页面实现
  8. CSDN【精品专栏】第29期
  9. 微信小程序踩坑之wxml中有内容,但是页面上不显示
  10. 28年蛰伏,易特驰打响「软件定义汽车」硬战
  11. mysql分隔符_在sql文件中设置MySQL分隔符
  12. JAVA8时间类库与JodaTime
  13. 洛谷——P7583 [COCI2012-2013#1] DOM(java实现)
  14. 破解RVDS2 2方法分享
  15. 解决问题:The field file exceeds its maximum permitted size of 1048576 bytes
  16. python学费12306_python【练手】12306查票
  17. javaweb中ffmpeg视频转码h264出现卡住不执行的解决办法(看到最后面就是答案了)
  18. 测试开源.net 混淆器ConfuserEx
  19. fmc接口定义_FPGA的FMC接口详细介绍
  20. 前端使用js实现新年(元旦)倒计时

热门文章

  1. 整数在计算机中的存储
  2. 01-在线挑战详细攻略-《我很简单,请不要欺负我》 http://bbs.ichunqiu.com/thread-1783-1-1.html (出处: i春秋社区-分享你的技术,为安全加点温度)
  3. vue中设置花样字体
  4. python 曲线平滑滤波
  5. 【B2B】酒店客房影音解决方案
  6. [LeetCode] 322.零钱兑换 五种方法讲解
  7. python数组越界_python数组越界
  8. GPT:你知道这五年我怎么过的么?
  9. 问题解决:CUDA unkonwn error,changing env variable CUDA_VISIBLE_DEVICES
  10. 编写bat脚本跳转到特定目录执行指定命令