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

目录
  • 1.什么是maven:
  • Maven的优点:
  • Maven的缺点:
  • maven常见的指令:
  • maven依赖范围:
  • maven四大特性:
    • 1.第一大特性:
    • 2.第二大特性:
    • 3.第三大特性:
    • 4.第四大特性:

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优缺点及使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Maven项目修改JDK版本全过程

    目录 1.1 打开Eclipse开发工具 2.1 配置完Eclipse和JDK 的开发环境以后 2.2 打开 Java Compiler 2.3 再打开 Project Facets, 3.1 走到这里完成还有一个地方没有配置 4.1 最后别忘了 右键项目 总结 一般来讲,项目更换JDK版本的情况比较少,但是有时难免会遇到.电脑安装不同版本的JDK这里不做介绍. 这里记录一下修改项目JDK版本要注意的几个地方. 1.1 打开Eclipse开发工具 配置JDK的安装路径 Window > Pref

  • maven导入本地仓库jar包,报:Could not find artifact的解决

    目录 maven导入本地仓库jar包报:Could not find artifact 1.检查本地仓库 2.接着检查idea的maven配置 3.猜测可能是因为maven会先去网上的中央仓库获取jar包 4.设置好后 5.注意离线工作后 总结 maven导入本地仓库jar包报:Could not find artifact idea使用maven导包,报错: 1.检查本地仓库 发现jar包存在: 2.接着检查idea的maven配置 确实配置了本地仓库: 3.猜测可能是因为maven会先去网上

  • 下载远程maven仓库的jar 手动放到本地仓库详细操作

    目录 如何下载远程maven仓库的jar 手动放到本地仓库? 简单步骤描述: 详细步骤描述: 如何下载远程maven仓库的jar 手动放到本地仓库? 在使用Maven构建Java项目时,通常会从中央仓库或其他远程仓库下载所需的依赖库.但是,有时候我们需要手动下载这些依赖库并将它们放到本地仓库,这里提供一个简单的步骤: 简单步骤描述: 可以按照以下步骤手动下载远程Maven仓库的JAR并将其放到本地仓库中: 打开Maven中央仓库网站:https://mvnrepository.com/ 在搜索框

  • Maven 项目用Assembly打包可执行jar包的方法

    目录 1.添加maven插件 2.mvn clean(清理下项目) 3.maven update project(用eclipse工具) 4.命令后执行命令mvn assembly:assembly -Dmaven.test.skip 5.执行 java -jar DataCollector.jar 该方法只可打包非spring项目的可执行jar包 1.添加maven插件 <build> <finalName>DataCollector</finalName> <

  • Spring Boot结合IDEA自带Maven插件如何快速切换profile

    目录 一.前言 二.配置详情 2.1 pom.xml修改 2.2 bootstrap.yml/application.yml修改 一.前言 IDEA是目前 Java 开发者中使用最多的开发工具,它有着简约的设计风格,强大的集成工具,便利的快捷键. 在项目项目整个开发运维周期中,我们的的项目往往需要根据不同的环境,使用不同的文件配置. 比如以下部分: 默认:application.properties/yml 共用配置:application-common.properties/yml 开发环境:

  • IDEA 中 maven 的 Lifecycle 和Plugins 的区别

    目录 IDEA maven 的 Lifecycle 与 Plugins 生命周期(Lifecycle) 阶段(Phase) 插件(plugin)和目标(goal) 补充:idea中maven的Plugins和 Lifecycle 区别 IDEA maven 的 Lifecycle 与 Plugins IDEA 主界面右侧 Maven 标签栏有同样的命令,比如 install,既在 Plugins 中存在,也在 Lifecycle中存在.到底选哪个?二者又有什么区别呢? 经过实验,很多时候都是 P

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

    目录 1.什么是maven: Maven的优点: Maven的缺点: maven常见的指令: maven依赖范围: maven四大特性: 1.第一大特性: 2.第二大特性: 3.第三大特性: 4.第四大特性: 1.什么是maven: maven是Java平台下的一款项目构建和依赖管理的自动化管理工具. 项目构建:将我们的源代码.配置文件变成可执行的war包或者jar包. 依赖管理:项目需要正常运行,必须依赖一些第三方的jar包,对于这些第三方的jar包的管理,可以认为就是依赖的管理. Maven

  • 浅谈Apache Maven ToolChains的使用

    简介 因为JDK的版本现在以每半年一次的速度在飞速发展.不同的JDK版本就有不同的java路径,我们在使用Maven的过程中,可能经常会需要切换JDK的版本. 一般来说我们可以在maven-compiler-plugin中配置好executable的路径.如下所示: <build> <plugins> <!-- target Java 14 --> <plugin> <artifactId>maven-compiler-plugin</ar

  • 浅谈使用Maven插件构建Docker镜像的方法

    本文介绍了使用Maven插件构建Docker镜像的方法,分享给大家,具体如下: 工具 工欲善其事,必先利其器.笔者经过调研,有以下几款Docker的Maven插件进入笔者视野: 插件名称 官方地址 docker-maven-plugin https://github.com/spotify/docker-maven-plugin docker-maven-plugin https://github.com/fabric8io/docker-maven-plugin docker-maven-pl

  • 浅谈php的优缺点

    一.优点 1. 跨平台,性能优越,跟Linux/Unix结合别跟Windows结合性能强45%,并且和很多免费的平台结合非常省钱,比如LAMP(Linux /Apache/Mysql/PHP)或者FAMP(FreeBSD/Apache/Mysql/PHP)结合,或者数据应用够大可以考虑换 PostgreSQL或者Oracle,支持N种数据库.(N >= 10) 2. 语法简单,如果有学习C和Perl的很容易上手,并且跟ASP有部分类似.有成熟的开发工具,比如NuPHPed,或者Zend Stud

  • 浅谈js中的三种继承方式及其优缺点

    第一种,prototype的方式: //父类 function person(){ this.hair = 'black'; this.eye = 'black'; this.skin = 'yellow'; this.view = function(){ return this.hair + ',' + this.eye + ',' + this.skin; } } //子类 function man(){ this.feature = ['beard','strong']; } man.pr

  • 浅谈JavaScript事件绑定的常用方法及其优缺点分析

    传统方式  element.onclick = function(e){ // ... };  1.  传统绑定的优点 非常简单和稳定,可以确保它在你使用的不同浏览器中运作一致 处理事件时,this关键字引用的是当前元素,这很有帮组 2. 传统绑定的缺点 传统方法只会在事件冒泡中运行,而非捕获和冒泡 一个元素一次只能绑定一个事件处理函数.新绑定的事件处理函数会覆盖旧的事件处理函数 事件对象参数(e)仅非IE浏览器可用 W3C方式  element.addEventListener('click'

  • 浅谈Maven的安装及修改为阿里云下载依赖

    使用JAVA工程管理越来越多的jar包,担心导错了,多导了,漏导了怎么办? 换一个IDE项目后项目会不会出一堆BUG,看的头皮发麻? 自己写的代码放在别人的机器上运行会不会出问题? Maven的强大毋庸置疑,当使用Maven后以上这些都不是问题,但是配置maven是一件耐心的事情,基本步骤总结如下: 一.下载 http://maven.apache.org/download.cgi 也可以直接在eclipse工具中下载,点击eclipse菜单栏Help->Eclipse Marketplace搜

  • 浅谈Linux进程间通信方式及优缺点

    1)管道 管道分为有名管道和无名管道 无名管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用.进程的亲缘关系一般指的是父子关系.无明管道一般用于两个不同进程之间的通信.当一个进程创建了一个管道,并调用fork创建自己的一个子进程后,父进程关闭读管道端,子进程关闭写管道端,这样提供了两个进程之间数据流动的一种方式. 有名管道也是一种半双工的通信方式,但是它允许无亲缘关系进程间的通信. 2)信号量 信号量是一个计数器,可以用来控制多个线程对共享资源的访问.,它不是用于交

  • 浅谈maven单元测试设置代理

    背景 环境需要设置代理才能够访问外部网络,如果只是运行java程序来访问网络,我们可以通过java -jar test.jar -DproxyHost=proxy_ip -DproxyPort=proxy_port,但如果是java的maven项目中,单元测试需要访问网络,只执行mvn test则会导致单元测试的代码无法访问网络. 解决 Maven单元测试,使用的是Surefire Maven插件.当Surefire插件fork JVM时,并不会继承所有的系统属性.因此我们可以通过命令行来如下设

  • 浅谈maven的jar包和war包区别 以及打包方法

    jar文件包括java普通类.资源文件和普通文件,在maven中即是打包src/main/java和src/main/resources资源文件夹下的所有文件.在打包的时候会自动生成MATA-INF文件夹,用于存储maven的pom信息和MANIFEST.MF文件.例如: war文件包含全部的web应用程序,即所有的java类,配置信息和jsp.js等静态资源.但是需要注意war引用war的时候会将应用war的资源全部拷贝到当前war的相同文件下,重名的文件会被替换.例如: war包依赖: <d

随机推荐