Maven

Maven面试题

1.Maven是什么?

Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。

Maven的主要功能分为以下几点:

① 依赖管理系统

② 多模块构建

③ 一致的项目结构

④ 一致的构建模型和插件机制

2.项目为什么要使用Maven构建?

首先,Maven是一个优秀的项目构建工具,使用Maven可以很方便地对项目进行分模块构建,这样在开发和测试打包部署时,效率会提高很多。

其次,Maven可以进行依赖管理。使用maven可以将不同系统的依赖进行统一的管理,并且可以进行依赖之间的传递和继承。

3.Maven常用命令

mvn install 项目打包并且打到本地仓库中

mvn deploy 项目发布,将项目打到公司私服上

mvn test 运行应用程序中的单元测试

mvn clean 清除项目目录中的生成结果

mvn package 打包成jar、war

4、Maven测试

maven测试为 default 生命周期中的test阶段。

maven-surefire-plugin 的test目标会自动执行测试源码路径下符合命名模式的测试类。

默认测试源代码路径: src/test/java/

测试类命名模式:

*/Test.java

*/ *Test.java

*/ *TestCase.java

按上述模式命名的类, 使用 mvn test 命令就能自动运行他们。

5.Maven的生命周期

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

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

clean

默认周期

主要阶段包含:

process-resources 默认处理src/main/resources/下的文件,将其输出到classpath目录中,

compile 编译src/main/java下的java文件,产生对应的class,

process-test-resources 默认处理src/test/resources/下的文件,将其输出到测试的classpath目录中,

test-compile 编译src/test/java下的java文件,产生对应的class,

test 运行测试用例,

package 打包构件,即生成对应的jar, war等,

install将构件部署到本地仓库,

deploy 部署构件到远程仓库

③site周期

主要阶段包含

site 产生项目的站点文档

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

6.排除依赖

A依赖B,B依赖C,A需排除B中的C(例如重复依赖A已有C)可以使用exclusions

7.处理无法下载的依赖

① 手动放到本地仓库

② 通过命令放到本地仓库

③ 在工程中建立自定义一个目录,手动build path

8.依赖的范围(了解)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

compile

默认scope为compile,表示为当前依赖参与项目的编译、测试和运行阶段,属于强依赖。打包之时,会打到包里去。

test

该依赖仅仅参与测试相关的内容,包括测试用例的编译和执行,比如定性的Junit。

runtime

依赖仅参与运行周期中的使用。一般这种类库都是接口与实现相分离的类库,比如JDBC类库,在编译之时仅依赖相关的接口,在具体的运行之时,才需要具体的mysql、oracle等等数据的驱动程序。

此类的驱动都是为runtime的类库。

provided

该依赖在打包过程中,不需要打进去,这个由运行的环境来提供,比如tomcat或者基础类库等等,事实上,该依赖可以参与编译、测试和运行等周期,与compile等同。区别在于打包阶段进行了exclude操作。

system

使用上与provided相同,不同之处在于该依赖不从maven仓库中提取,而是从本地文件系统中提取,其会参照systemPath的属性进行提取依赖。

import

这个是maven2.0.9版本后出的属性,import只能在dependencyManagement的中使用,只能引用packaging为pom的,能解决maven单继承问题,import依赖关系实际上并不参与限制依赖关系的传递性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值