脚本之家

电脑版
提示:原网页已由神马搜索转码, 内容由www.jb51.net提供.
您的位置:首页软件编程java→ maven优缺点及使用

浅谈一下maven优缺点及使用和特点

  更新时间:2023年03月30日 15:18:56  作者:半缘修道_半缘君 
这篇文章主要介绍了浅谈一下maven优缺点及使用和特点,一个项目管理工具软件,那么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优缺点及使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

    • Spring Boot 默认使用 SLF4J+Logback 记录日志,并提供了默认配置。本文我们将重点介绍Spring Boot日志的配置及输出。感兴趣的小伙伴可以了解一下
      2021-12-12
    • 这篇文章主要介绍了SpringMVC Hibernate与JPA,在正式进入Hibernate的高级应用之前,需要了解声明是数据模型与领域模型,这两个概念将会帮助我们更好的理解实体对象的关联关系映射
      2022-12-12
    • 这篇文章主要介绍了Spring事务是如何实现的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
      2023-03-03
    • 本文主要实现了将一张图片转成字符图片,同样可以遍历每个像素点,然后将像素点由具体的字符来替换,从而实现字符化处理,感兴趣的可以了解一下
      2021-11-11
    • 这篇文章主要介绍了Mybatis框架中Interceptor接口的使用说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
      2021-09-09
    • 这篇文章主要介绍了JVM内存溢出和内存泄漏的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
      2024-02-02
    • 这篇文章主要介绍了SpringBoot中使用Filter和Interceptor的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
      2019-06-06
    • 这篇文章主要介绍了MyBatis入门创建一个简单的程序,在 MySQL 中创建数据库 mybatisdemo,编码为 utf8,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
      2022-02-02
    • 这篇文章主要为大家详细介绍了java swing实现简单的五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
      2021-03-03
    • 在业务代码中经常需要保证事务的原子性,但是有的时候确实是出现事务没有生效,这篇文章主要给大家介绍了关于Spring boot事务无效报错:Transaction not enabled问题排查的相关资料,需要的朋友可以参考下
      2023-11-11

    最新评论