A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

【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插件
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,将项目部署到私服

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马