浅谈一下maven优缺点及使用和特点
作者:半缘修道_半缘君
1.什么是maven:
maven是Java平台下的一款项目构建和依赖管理的自动化管理工具。
项目构建:将我们的源代码、配置文件变成可执行的war包或者jar包。
依赖管理:项目需要正常运行,必须依赖一些第三方的jar包,对于这些第三方的jar包的管理,可以认为就是依赖的管理。
Maven的作用主要体现在两个词上面:项目和管理。项目管理从技术上来理解,就是 Maven 为项目提供了一种让团队能够更科学地管理、构建项目的手段。我们可以用配置文件的方式对项目的描述、名称、项目版本号、项目依赖等信息进行描述,使我们的项目结构更加清晰。
并且,有一些项目需要依赖一些第三方项目的模块或组件来完成,那么 Maven 则提供了一种 Maven仓库 的概念。将这些依赖全部放到 Maven仓库中,其他项目如果想要使用这些依赖,直接到仓库中取即可,避免了到开源网站下载 jar 包资源的步骤。
Maven的优点:
1、原来的项目中需要的jar包必须手动“复制”、”粘贴” 到WEB-INF/lib 项目下,而借助Maven,可以将jar包仅仅保存在“仓库”中,有需要使用的工程只需要“引用”这个文件,并不需要重复复制到工程中。
2、原来的项目中所需要的jar包都是提前下载好的,而Maven在联网状态下会自动下载所需要的jar包。首先在本地仓库中找,找不到就在网上进行下载。
3、原来的项目中一个jar包所依赖的其他jar包必须手动导进来,而Maven会自动将被依赖的jar包导进来。
4、原来的项目一个项目就是一个工程,而借助Maven可以将一个项目拆分成多个工程。
Maven的缺点:
1.由于需要下载,导入等,导致加载缓慢,或者出现错误,和不稳定
2.缺少对Maven的文档描述(网上一大堆,但是没有标准)
3.中央存储库中的元数据不佳
4.POM.xml做为项目元数据的来源
maven常见的指令:
- mvn archetype:generate :创建 Maven 项目
- mvn compile :编译源代码
- mvn test-compile :编译测试代码
- mvn test : 运行应用程序中的单元测试
- mvn site : 生成项目相关信息的网站
- mvn clean :清除目标目录中的生成结果
- mvn package : 依据项目生成 jar 文件
- mvn install :在本地 Repository 中安装 jar
- mvn deploy:将jar包发布到远程仓库
- mvn eclipse:eclipse :生成 Eclipse 项目文件
maven依赖范围:
- compile:编译范围,指 A 在编译时依赖 B,此范围为默认依赖范围。编译范围的依赖会用在 编译、测试、运行,由于运行时需要所以编译范围的依赖会被打包。
- provided:provided 依赖只有在当 JDK 或者一个容器已提供该依赖之后才使用, provided 依赖在编译和测试时需要,在运行时不需要,打包:比如:servlet-api,jsp-api 被 tomcat 容器提供。
- runtime:runtime 依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如:jdbc 的驱动包。由于运行时需要所以 runtime 范围的依赖会被打包。
- test:test 范围依赖 在编译和运行时都不需要,它们只有在测试编译和测试运行阶段可用, 比如:junit。由于运行时不需要所以 test范围依赖不会被打包。
- system:system 范围依赖与 provided 类似,但是你必须显式的提供一个对于本地系统中 JAR 文件的路径,需要指定 systemPath 磁盘路径,system依赖不推荐使用。
maven四大特性:
1.第一大特性:
依赖管理系统 maven为java世界引入了一个新的依赖管理系统jar包管理jar升级时修改配置文件即可,在java世界中,可以用groupid,artifactid,version组成的Coordination(做标)唯一标识一个依赖。
任何基于Maven构建的项目自身也必须定义这三项属性,生成的包可以是jar包,也可以是war包或者jar包。
①groupId:定义当前Maven项目隶属的实际项目--公司名称。
②artifactId:该元素定义实际项目中的一个Maven模块--项目名。推荐的做法是使用实际项目名称作为artifactId的前缀。比如:spring-bean,spring-webmvc等。
③version:该元素定义maven项目当前所处的版本。
2.第二大特性:
多模块构建 项目复查时dao service controller 层分离将一个项目分解为多个模块已经是很通用的一种方式。
在maven中需要定义一个parent POM作为一组module的聚合POM,在该POM中可以<modules>标签来定义一组子模块,parent POM不会有什么实际构建产生。而parent POM中的build配置以及依赖配置都会自动继承给子module。
3.第三大特性:
一致的项目构建 主要解决了我们在idea中和eclipse中创建的项目,目录可能不一样,但是如果使用了maven后,我们创建的项目目录都是一样的。 Maven在设计之初的理念就是Conversion over configuration(约定大于配置) ,其制定了一套项目目录结构作为标准的java项目结构,解决不同ide带来的文件目录不一致问题。
4.第四大特性:
一致的构建模型和插件机制如果我们需要tomcat服务器的时候,我们就把tomcat服务器的引进来。
到此这篇关于浅谈一下maven优缺点及使用和特点的文章就介绍到这了,更多相关maven优缺点及使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!