【Maven】几分钟了解Maven

MAVEN整合Spring+SpringMVC+Mybatis 2016/1/20 14:47:28原创,转载请注明出处曾经看过《那些年我们一起追过的女孩》,片中有个比较经典的画面,至今记忆犹新,柯景腾多年后,做了一名作家,每天面对电脑码字,背后是一张张一闪而过的字幅“人生就是不停的战斗”作为程序员,我想一生就是不停的和BUG做战斗了,新来的这家公司,用的很老的Spring+Struts2.0+JDBC的框架,非常的不好用,其中的问题可以陈述10条以上,但是限于 阅读详情

本文是一篇写给新手的Maven教程,注重实战,有清晰的指导步骤和说明。文章可能很枯燥、很干,但是绝对具有实际意义。我本身不喜欢在文章中添加一些娱乐的风格(如搞笑的段子、图片),因为这对于学习这门技术来说几乎没有任何帮助,还占用阅读时间。

我只想把这门技术的逻辑理清楚,并表达出来:技术主要是解决了哪些问题?有哪些组成的要点?基本的数据结构是什么?底层的原理是什么?由底层的数据结构和原理决定的性质是什么?怎么实际应用?

在我整个Maven系列文章中,读者也许会得到如下逻辑:

  • Maven主要解决的问题是:一体化管理Java项目中的依赖,自动测试打包部署
  • 技术组成要点:Maven环境配置、开发的目录结构、生命周期、pom.xml
  • 底层的原理:未深入了解,等待以后深入学习
  • 特性:pom.xml是Maven的核心
  • 应用:在Eclipse和IDEA中实践

本文主要内容:

  1. Maven做了什么
  2. 搭建Maven开发环境
  3. 工程目录、生命周期

什么是Maven

  1. 是 Apache 软件基金会组织维护的一款自动化构建工具,专注服务于 Java 平台的项目构建和依赖管理 。
  2. Maven 这个单词的本意是:专家,内行。读音是[‘meɪv(ə)n]或[‘mevn]。
  3. 构建工具的发展:Make→Ant→Maven→Gradle

传统项目开发的问题

  1. 一个工程很大的话,就不适合继续使用package来划分模块。最好是把这个工程拆分为多个模块,利于分工协作。借助于Maven就可以将一个项目拆分成多个工程。
  2. 项目中需要的Jar包必须手动“复制”、”粘贴” 到WEB-INF/lib 项目下。带来的问题:同样的jar包文件重复出现在不同的项目工程中,一方面浪费存储空间,另外也让工程比较臃肿。借助Maven,可以将jar包仅保存在“仓库”中,有需要使用的工程“引用”这个文件,并不需要重复复制。
  3. 需要管理Jar的版本。例如,你需要的是mysql.5.1.5.jar,给一个mysql.4.0.jar根本没法用。
  4. 管理Jar文件之间的依赖。项目中要使用a.jar,但是a.jar包又需要使用b.jar里面的类。必须首先获取到b.jar才可以,然后才能使用a.jar的这类问题。

Maven做了什么

  1. Maven可以管理jar文件
  2. 自动下载jar和他的文档,源代码
  3. 管理jar直接的依赖, a.jar需要b.jar , Maven会自动下载b.jar
  4. 管理你需要的jar版本
  5. 帮你编译程序,把java编译为class
  6. 帮你测试你的代码是否正确。
  7. 帮你打包文件,形成jar文件,或者war文件
  8. 帮你部署项目

Maven项目构建

构建是面向过程的,就是一些步骤,完成项目代码的编译,测试,运行,打包,部署等。

Maven支持的构建包括有:

  1. 清理:把之前项目编译的东西删除掉,我新的编译代码做准备。
  2. 编译:把程序源代码编译为执行代码,即由.java文件编译为.class文件。这个编译时批量的,Maven可以同时把成千上百的文件编译为class。另外和javac是不一样,因为javac一次编译一个文件。
  3. 测试:Maven可以执行测试程序代码,验证你的功能是否正确。批量的,Maven同时执行多个测试代码,同时测试很多功能。
  4. 报告:生成测试结果的文件,测试通过没有。
  5. 打包:把项目中所有的class文件、配置文件等所有资源放到一个压缩文件中。这个压缩文件就是项目的结果文件, 通常java程序,压缩文件是jar扩展名的。对于web应用,压缩文件扩展名是.war。
  6. 安装:把生成的文件jar、war安装到本机仓库。
  7. 部署:把程序安装好可以执行。

理解Maven的工作方式

让我们看一个案例研究,以了解它是如何工作的。假设你想使用 Log4j 作为项目的日志。这里你要做什么?

在传统方式:

  1. 访问http://logging.apache.org/log4j/
  2. 下载 Log4 j的 jar 库
  3. 复制 jar 到项目类路径
  4. 手动将其包含到项目的依赖
  5. 所有的管理需要一切由自己做
  6. 如果有 Log4j 版本升级,则需要重复上述步骤一次。

在Maven的方式:

1、你需要知道 log4j 的 Maven 坐标,例如:

<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>

2、它会自动下载 log4j 的1.2.14版本库。如果“version”标签被忽略,当有新的版本时它会自动升级为最新。
3、在pom.xml文件中声明 Maven 的坐标。

<dependencies>
    <dependency>
	<groupId>log4j</groupId>
	<artifactId>log4j</artifactId>
	<version>1.2.14</version>
    </dependency>
</dependencies>

4、当 Maven 编译或构建,log4j 的 jar 会自动下载,并把它放到 Maven 本地存储库,所有由 Maven 管理。

步骤原理:

当建立一个Maven的项目,pom.xml文件将被解析,如果看到 log4j 的 Maven 坐标,然后 Maven 按此顺序搜索log4j 库:

  1. 在 Maven 的本地仓库搜索 log4j
  2. 在 Maven 中央存储库搜索 log4j
  3. 在 Maven 远程仓库搜索 log4j(如果在 pom.xml 中定义)

搭建Maven环境

下载

从Apache Maven官网上直接下载:http://Maven.apache.org/download.cg。

直接解压到一个没有中文、没有空格的文件夹里,解压后的目录如下:

解压完毕后,就直接可以使用了。这个文件夹的位置就相当于Maven的安装位置。(注意:所有的Apache开源组织开发的软件都是绿色的!)

目录解析:

  1. bin:放置可执行文件的工具(mvn.cmd)
  2. config:配置文件的存放位置(settings.xml)
  3. lib:由于Maven是使用Java开发的,所以需要一些辅助的Jar包

配置环境变量

Maven版本配置要求:

  1. Maven 3.0/3.1 需要 JDK 1.5 或以上
  2. Maven 3.2 要求 JDK 1.6 或以上版本
  3. Maven 3.3.9这个版本所需的JDK版本必须要1.7以上

配置Maven_Home:

将Maven_Home添加到Path中:

注意格式:%Maven_Home%\bin

验证成功否:mvn -v

配置本地仓库

其中,settings.xml是Maven软件的核心文件,用于配置仓库的类型:

配置本地仓库的路径:

配置localRepository的功能:

  1. 这样一来,以后需要的类,都会先去这里寻找。自动下载的类,也会存储到这里。
  2. 如果不配置localRepository标签,则Maven会把数据自动下载到“C:\users\用户名\.m2\repository”中

Maven仓库

  1. 本地仓库:就是你的个人计算机上的文件夹,存放各种jar
  2. 远程仓库:在互联网上的仓库
    1. 中央仓库:最权威的,所有的开发人员都共享使用的一个集中的仓库(https://repo.Maven.apache.org :中央仓库的地址)
    2. 中央仓库的镜像:就是中央仓库的备份,在各大洲,重要的城市都有镜像。
    3. 私服,在公司内部,在局域网中使用的,不是对外使用的。

注意,程序员不能直接选择仓库,这是Maven自动管理的,使用顺序是:本地仓库 --> 私服 --> 中央仓库、镜像仓库

Maven原理

Maven工程约定的目录结构

项目名(例如HelloMaven):

  1. src
    1. main:放置主程序Java代码和配置文件
      1. java:包和Java源代码文件
      2. resources:配置文件
    2. test:放置测试程序Java代码和配置文件(如果没有测试可以没有这个目录)
      1. java:测试用的包和Java源文件
      2. resources:测试用的配置文件
  2. target:结果目录,保存编译后的.class文件
  3. pom.xml

Maven生命周期

什么是Maven的生命中周期:

  1. 就是Maven构建项目的过程,清理,编译,测试,报告,打包,安装,部署
  2. Maven的命令:Maven独立使用,通过命令,完成Maven的生命周期的执行。
  3. Maven的插件:Maven命令执行时,真正完成功能的是插件,插件就是一些jar文件, 一些类。

使用Junit:它的主要功能是测试类中每一个方法(方法都是独立测试的)

  1. 在pom.xml加入单元测试依赖
  2. 在Maven项目中的src/test/java目录下,创建测试程序。测试类的名称是:Test + 你要测试的类名。测试的方法名称是:Test + 方法名称(要求是public、返回值为void)

主要命令:

  1. mvn clean:清理。会删除原来编译和测试的目录,即target目录,但仓库里的包不会删除。
  2. mvn compile:编译主程序。只会编译main/java目录下的文件,编译后的文件存放于当前目录下新建的target目录。同时把class拷贝到 target/classes目录下面,把main/resources目录下的所有文件 都拷贝到target/classes目录下
  3. mvn test-compile:编译测试程序。只会编译test/java目录下的文件,编译结果会存储于当前目录下生成一个target
  4. mvn test:执行测试。会生成一个目录surefire-reports,保存测试结果
  5. mvn package:打包主程序。会编译、编译测试、测试、并且按照pom.xml配置把主程序打包生成jar包或者war包,存放于target目录。注意,只会把src/main下的文件打入包。
  6. mvn install:安装主程序。会把本工程打包,并且按照本工程的坐标保存到本地仓库中。
  7. mvn deploy:部署主程序(会把本工程打包,按照本工程的坐标保存到本地库中,并且还会保存到私服仓库中。还会自动把项目部署到web容器中)。
  8. 注意:执行以上命令必须在命令行进入pom.xml所在目录!

 

通达信源码-主力建仓-AI投研图灵室出品 AI投研图灵室1:=3*SMA((CLOSE-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1)-2*SMA(SMA((CLOSE-LLV(LOW,75))/(HHV(HIGH,75)-LLV(LOW,75))*100,20,1),15,1);AI投研图灵室2W:=100-100*(HHV(HIGH,14)-CLOSE)/(HHV(HIGH,14)-LLV(LOW,14));AI投研图灵室3:=SMA(SMA(AI投研图灵室2,3,1),3,1); 阅读详情

相关推荐

python刷B站播放量

首先,我们要知道B站播放量计算方法:不同的IP只能算一次,如果点一下就关掉,会出现播放完成度很低的情况,反而不利。 所以我们要做的是:不停换IP地址打开视频播放页,最好能看完视频。 下面是实现方法: 获取某一个网页上的所有代理IP,返回一个IP列表: def get_ip_list(url, headers): web_data = requests.get(url, headers=headers) soup = BeautifulSoup(web_data.text, 'lxml

HGGshiwo的博客 1万+

【Maven】Maven的常用命令

讲述Maven的常用命令

四季轮换叶,一路招摇胜 1万+

LDPC码译码原理——概率公式推导

怎么说呢,一直以来都想写一下博客。近半年多来我一直在学习LDPC码译码上的东西,主要是在FPGA实现上的,所以这次想写一些关于这方面的内容,包括译码的原理、仿真以及实现。(当然是基于准循环LDPC码上实现的)不过呢,我写这个的初衷是为了让初学者理解入门用的,而不是在大牛面前班门弄斧,有错误之处欢迎大家批评指正。不知道会不会有人一开始像我一样,为了学好LDPC码,先去好好了解其它的诸如RS码或者是卷...

stand_by_me123的博客 2万+

Maven超详细讲解——高级篇

分模块开发与设计 此部分内容建议有SSM开发经验再看,也可以熟悉后回顾。 企业开发过程中通常将工程模块中的包拆分成单独模块交给员工合作开发,模块之间根据接口通信。主模块中不放实际功能,所有的功能做成独立的模块。 ssm_pojo拆分 ● 新建模块 ●拷贝原始项目中对应的相关内容到ssm_pojo模块中(建议在新模块中先建好对应的包在拷贝内部的内容) ◆实体类(User) ◆配置文件(无) 因为pojo中只需要jdk的核心API,没有外部的资源jar,只要com...

u014681502的博客 1908

Triton server的部署、构建、backend插件机制代码梳理、模型加载、自定义C++backend流程

Triton inference server的部署、构建、backend机制代码详细梳理、模型加载过程、自定义C++backend流程.

C/C++、嵌入式开发、深度学习算法、模型部署与推理优化 473

Misc-RAR隐写

题目来自于:XCTF的SimpleRAR,由于涉及到许多新知识,所以写篇小文子记录一下。 一、下载完后是一个压缩包。 里面就有一个flag.txt,打开之后发现有一串字符是flag is not here,而且我们查看他的文件大小,只要十六字节,绝对不可能再藏着什么信息了。 然后把压缩包拉到010editor里面,发现一下子出来好多新的内容,很明显是有夹杂着的附加文件。 二、rar文件头信息。 rar 是由一个一个 block 组成的,每个 block 有以下几个部分 ...

admin的博客 1361

Maven的生命周期详解

本篇文章重点针对这几个问题进行讲解:maven的生命周期都有哪些阶段?maven的生命周期和插件到低有什么关联?插件和插件的目标有什么关联?假如我们要用某个插件,怎么上官网查找?怎么手动调用插件?

怪咖@的博客 8864

BiSeNet:面向实时语义分割的双边网络

BiSeNet 系列重新定义了实时语义分割的范式“不要在速度和精度之间妥协——用架构创新,两者兼得。V1:提出双边解耦思想,启发后续大量工作;V2:通过极致轻量化,证明小模型也能高精度;V3(工业版):推动端侧 AI 落地,成为行业标准之一。如今,BiSeNet 已成为嵌入式视觉系统的默认选择,其设计理念(解耦、轻量、融合)被广泛应用于目标检测、姿态估计等领域。

浩瀚之水的专栏 267

解决“Maven正在解析依赖”速度过慢问题

注意:本地仓库设置路径应与setting文件中一致,这个文件目录存放从Maven远程仓库拉取来的。IDEA在导入Maven项目时会自动检测并加载相关配置。每个 Maven 项目都有一个。成功解决该问题,这也让我感受到了,正常的Maven加载时间是不过长的。文件中的配置从远程仓库下载依赖包,并将它们存储到本地仓库。之前有修改过maven的conf目录下的。从Maven中心仓库拉取jar包的速度的。Maven 默认的本地仓库位置是。重写IDEA设置中Maven的。

m0_51509581的博客 5664

AutoSAR系列讲解(实践篇)7.3-AppL在Dev中的配置(下)

接着讲解Dev中剩下的几个定义项

雪云飞星的博客 1万+

刚体转动欧拉方程:从理论到卫星姿态控制的实践

刚体转动欧拉方程是描述刚体旋转运动的基本动力学方程,在卫星姿态控制、机器人学、航空航天等领域有着广泛应用。本文将详细讲解欧拉方程的物理概念、数学推导、数值计算方法,并重点分析其在卫星姿态控制系统中的具体应用。

ScilogyHunter的博客 642

Maven的简单介绍

目录 Maven简介 Maven作用 坐标 Maven命令 Maven简介 Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM) pom.xml配置文件就可以看成一个项目,对项目进行各种管理就可以通过配置文件来实现(pom.xml)并不属于maven本身。 项目对象需要用到依赖管理 Maven的本质是一个项目管理工具,将项目开发和管理过程抽象成一个项目对象模型(POM) pom.xml配置文件就可以看成一个项目,对项目进行各种管理就可以通过配置

Huang405267467的博客 1197

基于滤波反投影的图像重建算法matlab仿真

基于滤波反投影的图像重建算法是一种用于医学影像重建的计算机辅助技术。该算法可以从投影数据中重建出高质量的三维图像,被广泛应用于医学影像学、CT、PET等领域。本文将详细介绍基于滤波反投影的图像重建算法的原理、步骤和应用。一、原理介绍基于滤波反投影的图像重建算法基于X射线CT成像原理,它的主要思想是通过对投影数据进行处理,反推出被成像物体的三维形状。其核心原理是投影数据与目标物体之间的线性关系,即通过估计目标物体的吸收率来计算投影数据的变化,从而反推出目标物体的三维形状。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 385

让我们彻底了解Maven(二)--- Maven私服的搭建

Name:仓库的名字;Type:仓库的类型;Format:仓库的格式;Status:仓库的状态;URL:仓库的网络地址。仓库总共分为四种类型,如下:注意的是,本地的Maven需要配置私服地址,当项目需要的依赖,在本地仓库没有,就会去到相应的宿主/远程仓库拉取;如果宿主仓库也没有,就会根据配置的代理仓库地址,去到中央仓库拉取。

一个人的江湖 3248

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java-Maven3.9.6:Maven依赖管理 / 安装-配置-使用

本文介绍了Maven项目管理工具的核心概念、安装配置及常用命令。Maven通过POM文件管理项目结构和依赖关系,提供标准构建生命周期,支持自动下载依赖库和灵活的插件扩展机制。文章详细说明了Maven对JDK版本的要求(3.x需要JDK1.7+),并提供了JDK版本检测方法。重点讲解了Maven的下载安装步骤、环境变量配置(包括Maven_Home和MAVEN_OPTS设置),以及通过mvn help:system验证安装。最后整理了实用的Maven命令速查表,涵盖清理、编译、测试、打包等生命周期命令,以及依

snow的博客 8167

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

MAVEN的使用

MAVEN是java的一个构建工具,她能够更快速的构建你的项目,更容易发布打包并且很好的控制版本以及处理各种错综复杂的Jar包依赖关系,一般在IDE中使用很少会涉及到命令行的,但是要想很好的使用她还是需要了解一下一些基本的东西,在IDE中只需要Click Click几下就搞定了。 1.安装 Maven是一个Java工具,所以你必须安装Java环境。首先,下载Maven并解压到你选择的安装目录,例...

心雨楼 207

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

教你几分钟学会远程发布项目到tomcat服务器

教你几分钟学会远程发布项目到tomcat服务器 一、maven项目 1、使用tomcat7-maven-plugin插件 2、示例 <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId&gt...

Bug君的博客 374

几分钟搞定MyBatis

初识MyBatis MyBatis 2020-08-10 10:51:30 星期一 标题内容 mybatis官方文档 https://mybatis.org/mybatis-3/zh/gettingstarted.html 什么是MyBatis - MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 - iBATIS一词来源于“

Zhijie Wei的博客 139

IDEA新建Maven项目没有webapp目录解决方案

IDEA新建Maven项目没有webapp目录解决方案

m0_60512410的博客 1万+

maven安装及配置

由于Maven依赖Java运行环境,因此使用Maven之前需要配置Java的运行环境。下载并安装JDK,配置JDK的环境变量JAVA_HOME,否则maven将无法使用 1.下载地址:http://maven.apache.org/download.cgi 2.下载下来之后,解压,找个路径放进去,新建环境变量MAVEN_HOME,把maven环境配置进去 3.编辑path

my2016的专栏 6852

软件.Maven安装

Step 2:右键点击我的电脑-->点击属性,选择高级系统设置-->环境变量-->点击新建-->变量名称为MAVEN_HOME,路径为E:\AllEdit\maven\apache-maven-3.6.3,然后点击确定,之后就会看到环境变量中出现了刚才配置的MAVEN_HOME。Maven是一个构建项目、管理jar包的工具,有了Maven后,开发所需要的jar包会统一由Maven仓库进行管理,当需要某个jar包时,只需要通过pom文件配置一下,这个jar包就会自动下载到Maven仓库。

qq_46263813的博客 689

Jenkins配置maven

一、Maven是什么? Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。 在多个开发团队环境时,Maven可以设置按标准在非常短的时间里完成配置工作。由于大部分项目的设置都很简单,并且可重复使用,Maven让开发人员的工作更轻松,同时创建报表,检查,构建...

shykevin的博客 432

Maven的创建与配置

Maven的创建与配置1. Maven简单介绍2.下载jar包:3. Maven安装与配置下载地址:http://maven.apache.org/download.cgimaven环境配置:验证是否配置成功:集成eclipse:setting两配置:设置maven maven插件安装与配置:测试maven安装与配置情况:测试:创建一个Sevlert,重写doget方法,输出语句 1. Mav...

water_java的博客 380

maven 需要管理员权限_Nexus3搭建Maven私服

引子 Apache Maven是当Java技术栈最常见的项目管理工具,它提供了一系列方便快捷的命令帮助程序员们进行Java工程的开发。Maven服务器位于美国,由于出国带宽和众多因素,在国内直接使用Maven的体验并不好。同时,国内还有很多公司的程序员开发机器无法直接连接互联网。鉴于这种情况,我们需要在公司内网搭建Maven私服,能大大提高开发效率。下面我们将讲讲Nexus是如何实现Maven私服...

weixin_33894125的博客 766

maven使用入门介绍

1.maven的安装     Maven是一个Java工具,所以你必须安装Java环境。首先,下载Maven并解压到你选择的安装目录,例如在windows下的C:\maven,或者Linux下的/usr/local/maven。然后添加系统变量$M2_HOME和M2_HOME\bin到你的系统路径。具体地,变量名M2_HOME,值为C:\maven;变量名Path,值加上%M2_HOME%\b

shoren80的专栏 1503

IDEA创建maven项目没有src文件夹怎么办

解决办法是在创建mave项目的时候添加一个属性 archetypeCatalog internal 就可以了 但是! 创建完还是没有src 这个时候我们需要等几分钟。。。src才会出来 (我当时正准备删掉这个项目重修建的时候src它自己出来了) ...

weixin_44118809的博客 3990
上一篇: [Java]日志实战:JCL,slf4j;JUL,logback,log4j,log4j2
下一篇: 【Maven】pom.xml教程
ALGO阿狗
博客等级 码龄9年 64粉丝 149原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值