当前位置: 首页 > news >正文

Maven面试题大全及答案

1.什么是Maven?
Maven使用项目对象模型(POM)的概念,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发布时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven的出现,解决了开发过程中的jar包升级及依赖的难题。它可以对项目依赖的jar包进行管理,可以让你的项目保持基本的依赖,排除冗余jar包,并且可以让你非常轻松的对依赖的jar包进行版本升级。而这些仅仅是Maven最基本的功能,它可以在这基础上对项目进行清理、编译、测试、打包、发布等等构建项目的工作。
可以说,Maven是现在Java社区中最强大的项目管理和项目构建工具,而更加值得庆幸的是,这样一个强大的工具,它的使用也是非常简单的。
现在,JavaEE项目使用的开源软件都可以通过Maven来获取,并且,越来越多的公司也开始使用Maven来管理构建项目了。
2.Maven和ANT的区别
1.maven&ant同属apach是流行的构建工具。
都是为了简化软件开发而存在的。但是maven因为自身管理一个项目对象模型(project object model),这个模型其实就是抽象了一个项目的开发流程,它包含了一个项目的生命周期的各个阶段,并将这个周期固定下来,这也就是约定大于配置。约定大于配置的意思就是,我maven将项目开发的各个阶段固定起来了,每个文件的存放位置,每个阶段要生成什么文件、保存为什么格式并且要把它放在什么位置,我都固定好了。我知道一个软件是怎么开发出来,如果一个项目要使用maven,可以,但你要遵循我的规则,文件目录不要乱建乱放,只有这样maven才会将源码用起来。这就是约定大于配置,因为maven已经将流程固定下来了,只要遵守约定,就不需要自己手动去配置了,这将大大地提高开发效率。就像是开车一样,只要知道点火、油门、方向、刹车,就可以将车子开东起来(当然出于安全和法律考虑,还是要考驾照的。),关于车子内部的传动原理,电气原理,工程原理,普通人并不需要了解多少,日常够用就好了。这也是约定大于配置的一个例子。配置就是自己造一辆车去开,有必要,有能力,有时间吗?
2.maven的中央仓库和pom.xml文件。中央仓库统一存放了开发用到的各种jar包,要用时只需要添加依赖到pom文件中,maven就会自动下载,当然为了方便一般会在本地建一个仓库,减少下载时间。pom文件是maven的配置文件,maven就是通过管理pom文件和一些核心插件来管理项目。当然我前面将maven拟人化了,其实maven是没有智力的,一切都是封装好的流程,只是maven将很多操作隐藏起来了。
3.ant的build.xml文件。build文件是ant的配置文件,ant依靠它来执行操作,与maven不同的是ant没有固定一条程序链。你想要执行什么操作以及操作之间的顺序和依赖关系,都需要手动添加到build文件中,一点一滴都要写清楚,否则ant就不会执行。
4.maven和ant区别
Maven 拥有约定,只要遵守约定,它就知道你的源代码在哪里。Maven 是声明式的。你需要做的只是创建一个 pom.xml 文件然后将源代码放到默认的目录。Maven 会帮你处理其它的事情。Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达你指定的生命周期。缺点是运行许多默认目标。
而ant没有约定,项目生命周期,它是命令式的。所有操作都要手动去创建、布置。甚至连build.xml文件都需要手动创建。
3.Maven仓库是什么
Maven仓库是基于简单文件系统存储的,集中化管理Java API资源(构件)的一个服务。仓库中的任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存储路径。得益于 Maven 的坐标机制,任何 Maven项目使用任何一个构件的方式都是完全相同的,Maven 可以在某个位置统一存储所有的 Maven 项目共享的构件,这个统一的位置就是仓库,项目构建完毕后生成的构件也可以安装或者部署到仓库中,供其它项目使用。
对于Maven来说,仓库分为两类:本地仓库和远程仓库。
4.Maven的工程类型有哪些?
POM工程
POM工程是逻辑工程。用在父级工程或聚合工程中。用来做jar包的版本控制。
JAR工程
将会打包成jar用作jar包使用。即常见的本地工程 - Java Project。
WAR工程
将会打包成war,发布在服务器上的工程。如网站或服务。即常见的网络工程 - Dynamic Web Project。war工程默认没有WEB-INF目录及web.xml配置文件,IDE通常会显示工程错误,提供完整工程结构可以解决。
5.Maven常用命令有哪些?
install
本地安装, 包含编译,打包,安装到本地仓库
编译 - javac
打包 - jar, 将java代码打包为jar文件
安装到本地仓库 - 将打包的jar文件,保存到本地仓库目录中。
clean
清除已编译信息。
删除工程中的target目录。
compile
只编译。 javac命令
deploy
部署。 常见于结合私服使用的命令。
相当于是install+上传jar到私服。
包含编译,打包,安装到本地仓库,上传到私服仓库。
package
打包。 包含编译,打包两个功能。

http://www.lryc.cn/news/136948.html

相关文章:

  • 探究字符串匹配算法:暴力法与KMP算法的Java实现
  • 前端面试:【浏览器与渲染引擎】工作原理与渲染流程
  • PySide6学习笔记--gui小模版使用
  • 如何用Python实现冒泡排序
  • C++Qt堆叠窗体的使用案例
  • Linux之套接字UDP实现网络通信
  • Matlab绘制二值图像
  • Kali 网络参数的配置
  • 在 Redis 中处理键值 | Navicat
  • RedisTemplate和StringRedisTemplate的区别、对比
  • 使用ChatGPT进行创意写作的缺点
  • 七、任务优先级和Tick
  • Python——三目运算语句
  • C 实现Window/DOS 键盘监听事件
  • 在vue中使用 axios 访问 API
  • java八股文面试[java基础]——浅拷贝和深拷贝
  • 【DC-DC的原理图及Layout设计要点】
  • TCP可靠性机制
  • solidity0.8.0的应用案例13:数字签名及应用:NFT白名单
  • 视频集中存储/直播点播平台EasyDSS内核无法启动是什么原因?
  • 【网络】DNS | ICMP | NAT | 代理服务器
  • 详细手机代理IP配置
  • 【C++】—— 简述C++11新特性
  • 协议的分层结构
  • Linux下彻底卸载jenkins
  • Nebula基础的查询操作介绍
  • C++ STL序列式容器(详解)
  • C++获取map最小值算法,STL---std::min_element()!
  • 如何在Java实现TCP方式发送和接收Socket消息(多线程模式)
  • SYBASE查询全量字段及对应的表名方法