【011】如何控制当前依赖是否向下传递?
答:
在依赖节点dependency中的<optional>可以控制当前的依赖是否向下传递;
默认位false,表示向下传递。如不需向下传递依赖,可修改配置为true
【012】如何排除依赖?
答:
可以在依赖节点中设置排除依赖节点:<exclusions>,然后再添加<exclusion>
<exclusion>里面包括的内容有:
【注意】不需要添加版本,直接类别排除
【013】Maven的生命周期如何?
答:
Maven的生命周期是为了对所有的构建过程进行抽象和统一,包括:项目清理、初始化、编译、测试、打包、部署等几乎所有的构建步骤。
Maven有3套相互独立的生命周期,分别是:
- Clean Lifecycle :在真正构建之前进行一些清理工作
- pre-clean :执行一些需要在clean之前完成的工作
- clean :移除所有上一次构建生成的文件
- post-clean:执行一些需要在clean之后立刻完成的工作
- Default Lifecycle :构建的核心部分(编译、测试、打包、部署等)
- compile :编译项目的源代码
- test :运行测试
- package :打包编译好的代码成可发布的格式,如:jar
- install :将包安装至本地仓库,让其它项目可以依赖
- deploy :部署到远程仓库,共享
- Site Lifecycle :生成项目报告、站点、发布站点
- pre-site :执行一些需要在生成站点文档之前完成的工作
- site :生成项目的站点文档
- post-site :执行一些需要在生成站点文档后完成的工作,为部署做准备
- site-deploy:将生成的站点文档部署到特定的服务器
【注意】
它们都是相互独立的,可以仅调用clean来清理工作目录,也可以仅调用site来生成站点,也可以运行 mvn clean install site 同时运行这3套生命周期
在一个生命周期中,运行某个阶段的时候,它之前的所有阶段都会被运行,这是Maven很重要的一个规则,可以大大简化命令行的输入
【014】Maven中什么是插件目标
答:
Maven的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的,每个插件都能实现多个功能,每个功能就是一个插件目标。
Maven的生命周期与插件目标相互绑定,以完成某个具体的构建任务,例如:
compile就是插件maven-compiler-plugin的一个插件目标
- tomcat插件
- 添加tomcat插件可以针对项目快速配置多个不同端口的tomcat
- 没有配置tomcat插件时,运行tomcat:run,运行的是内置的tomcat6插件
- 打包项目源码插件
【015】Maven的继承有什么用?
答:
继承是为了消除重复,方便统一管理项目的依赖版本问题,进行版本控制
它可以把pom中很多相同的配置提取出来,如:groupId、version等。在使用时子工程直接继承父工程的依赖版本号,子工程不需指定具体版本号
【注意】继承时父工程的pom.xml打包方式必须设置为pom的方式
【016】Maven的聚合有什么用?
答:
如果想一次构建多个项目模块,则需对多个项目模块进行聚合,代码如下:
<modules>
<module>../子项目名1</module>
<module>../子项目名2</module>
<module>../子项目名3</module>
</modules>
【017】Maven中继承与聚合的区别?
答:
聚合主要是为了快速构建项目,它可以将一个项目拆分成多块,让多个人一起开发
继承主要是为了消除重复
【018】Maven为什么要搭建私服?
答:
- 搭建私服可以提高效率
- 如果某个IP地址恶意下载中央仓库内容,例如全公司100台机器使用同个UP反复下载,那么这个IP(段)很可能会进入黑名单,因此稍有规模的使用Maven时,应该用Nexus架设私服
- 有些公司不提供外网给项目组人员,就不能使用maven访问远程的仓库地址,所以需在局域网内使用一台有外网权限的机器搭建nexus私服,让开发人员连上私服,通过搭建了nexus私服的电脑访问maven的远程仓库
【019】Nexus的仓库类别和具体仓库都有哪些?
答:
Nexus仓库可以配置3种类型的仓库和组,分别是:
- proxy :远程仓库的代理
- hosted :宿主仓库(在Central repository获取不到的,需手工上传到hosted里)
- virtual :中央仓库镜像,支持M1老版本
- group :仓库组(maven里没有这个概念,是nexus特有的)
- group仓库组的目的是将上述多个仓库聚合,对用户暴露统一的地址,这样用户就不需要在pom中配置多个地址,只需统一配置group的地址即可。
- 具体仓库
- 3rd party :无法从公共仓库获取的第三方发布版本的构件仓库
- Apache Snapshots :用了代理Apache Maven仓库快照版本的构件仓库
- Central :用来代理Maven中央仓库中发布版本构件的仓库
- Central M1 shadow :提供中央仓库中M1格式发布版本的构件镜像仓库
- Releases :用来部署管理内部发布版本构件的宿主类型仓库
- Snapshots :用来部署管理内部快照版本构件的宿主类型仓库
【020】Maven项目如何从私服下载资源?
答:
① 添加镜像配置:将所有访问外网仓库的请求指向私服
② 添加仓库配置:
【注意】仓库的配置是在pom.xml中配置的,优先级大于总配置文件(settings.xml)
③ 生效配置
【021】Maven项目如何上传资源到私服?
答:
① 在项目的pom.xml文件中添加上传部署的路径
如果需要对releases版本进行多次部署,需在私服中对release仓库进行
Configuration -->> Development Policy -->> "Allow Redeploy"
② 在maven的总配置文件(settings.xml)中添加上传构件到nexus的账号、密码
③ 在项目中右键选择 run as maven build...,然后在Goals中输入deploy,将项目部署到私服
|
|