Maven详细教程(图文并茂)

简介: Maven详细教程(图文并茂)

一、maven概述


1.1、项目开发中的问题



1、我的项目依赖一些jar包,我把他们放在哪里?直接拷贝到项目的lib文件夹中?
   如果我开发的第二个项目还是需要上面的那些jar包,再把它们复制到我当前项目lib中?
   那如果现在是第三次了,再复制一次吗?
   -----这样真的好吗?这样子操作会引起什么样的问题?
  以上操作会出现的问题:
  重复存放jar包;容易出现jar包冲突;手动拷贝jar包容易缺少一些jar包。
  解决方案:用maven来管理jar包 
2、我写了一个数据库相关的通用类,并且推荐给了其他项目组,现在已经有5个项目组使用它了,
今天我发现了一个bug,并修正了它,我会把jar包通过邮件发给其他项目组。
-----这样真的好吗?那如果有新的bug出现,还要改呢?
以上操作会出现的问题:需要开发人员每次都手动接收新的jar包并替换掉本地的jar包,麻烦。
解决方案:用maven来管理jar包


注意:在maven中所描述的依赖就是我们平常使用的第三方的jar包。


1.2、maven是什么


1.2.1 maven定义


  Maven是一个项目管理工具。它包含了一个项目对象模型 (Project Object Model),一组标准集合,
  一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),
  和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
  当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,
  然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
                                      ---《百度百科》
 maven:本质上是一个软件,用来管理项目的。                                                           


1.2.2 mven的作用


  1. 项目构建管理: maven提供一套对项目生命周期管理的标准,开发人员、和测试人员统一使用maven进行项目构建。项目生命周期管理:编译、测试、打包、部署、运行。


  1. 管理依赖(jar包): maven能够帮我们统一管理项目开发中需要的jar包;


  1. 管理插件: maven能够帮我们统一管理项目开发过程中需要的插件;


二、maven快速入门


2.1、maven的下载与安装


下载


官方网站:http://maven.apache.org/


下载页面:http://maven.apache.org/download.cgi



注:本教程使用的是3.3.9版本的maven。


安装


maven安装包下载完成后是一个压缩文件,如下图所示:



我们需要将压缩包解压到一个没有中文,空格或其他特殊字符的文件夹内即可使用:



2.2、maven安装目录简介



目录名 功能说明
bin 二进制的可执行文件,如:mvn.cmd是maven的核心可执行文件
boot 第三方类加载器插件,类似于ClassLoader
conf 配置文件夹,其中的settings.xml是用于配置本地仓库的
lib maven自身运行所需要的jar包


2.3、maven配置-MAVEN_HOME


2.3.1 配置JAVA_HOME


3版本的maven软件依赖1.7或以上版本的JDK,所以安装maven之前需要确认jdk的版本和JAVA_HOME是否正确配置:




注意:JAVA_HOME路径需要设置成bin目录的上一级目录


2.3.2配置MAVEN_HOME


按照上面JAVA_HOME的配置方式,将maven的安装目录配置到环境变量中。


MAVEN_HOME=maven压缩包解压目录,就是bin的上一级目录。


第一步:新增环境变量:MAVEN_HOME



第二步:在path环境变量中添加:%MAVEN_HOME%\bin



第三步:测试:在cmd控制台中输入命令: mvn -version ;如果出现以下maven的版本信息,则说明maven的安装与环境变量的配置均正确;



说明:出现如上信息说明maven安装和配置环境变量都成功。


2.4、maven仓库介绍


仓库就是一个目录(文件夹),这个目录被用来存储我们项目的所有依赖(就是jar包)和插件。


仓库包括两类仓库:


1)本地仓库


2)远程仓库


远程仓库又包括两类:


a:中央仓库


b:私服


具体分类如下图所示:



2.4.1、maven本地仓库配置


2.4.1.1 本地仓库是什么


本地仓库就是本地目录(文件夹),这个目录被用来存储我们项目的所有依赖(就是jar包),本地仓库供你电脑上所有项目使用,maven所有的jar包都是从远程仓库下载到本地仓库.


2.4.1.2 配置本地仓库


本地仓库的位置是通过maven的核心配置文件(settings.xml)来配置的。settings.xml文件位于maven安装目录:apache-maven-3.3.9\conf\settings.xml 。



打开settings.xml文件:



发现本地仓库默认的地址为当前用户的/.m2/repository目录。


一般情况下,我们需要自己重新设置本地仓库的地址,设置方法如下:


  1. 第一步:在maven的安装目录下创建一个repository文件夹(一般习惯将仓库地址和maven安装目录放置在一起)。



  1. 第二步:在核心配置文件setting.xml中,将仓库存放的位置设置成:D:\MySoft\maven\apache-maven-3.3.9\repository(以自己的安装路径为准);



2.4.2、远程仓库


远程仓库又包括两类:


a:中央仓库


b:私服


2.4.2.1、中央仓库


中央仓库默认是apache提供的,位于国外。(中央仓库的地址:

http://mvnrepository.com/)



2.4.2.2、配置maven私服


2.4.2.2.1 什么是私服


私服是可以架设在局域网的一种特殊的远程仓库,目的是代理中央仓库来部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库(中央仓库),将构件下载到私服,再提供给本地仓库下载。


我们现在使用的私服有两个:1)阿里云私服(连接外网) 2)传智私服(在教室里局域网)


我们到公司,公司都会有自己的私服。其实私服就是一个服务器。我们的maven项目到私服服务器上去下载jar包到本地仓库供maven项目使用。




2.4.2.2.2 配置私服


打开settins.xml文件,找到标签节点,在这个标签中添加以下配置信息中的任意一个:

【传智局域网私服】–在教室使用


 <mirror>
      <id>my</id>
      <mirrorOf>*</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://192.168.50.187:8081/repository/maven-public/</url>
 </mirror>


【阿里云私服】–连外网时使用


<mirror>
     <id>nexus-aliyun</id>
     <mirrorOf>*</mirrorOf>
     <name>Nexus aliyun</name>
     <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>



注: 千万注意, 只可配置一个(另一个要注释!) 不然两个可能发生冲突 ,导致jar包下不下来 !!!


三、maven工程


在创建maven工程之前一定要保证上述的仓库都是配置成功了,否则无法创建maven项目,因为创建maven项目都要到仓库中去下载插件。那么上面我们已经配置好maven仓库了,接下来我们就要创建maven工程了。


1、IDEA配置本地maven


因为idea和maven是没有直接关系的。所以使用idea创建maven工程之前需要将本地的maven配置到idea环境中,这样才可以在idea中创建maven工程。配置方法如下:


1.1 配置本地maven


  1. 第一步:关闭当前工程,回到idea主界面找到customize-----All settings:



  1. 第二步:配置maven_home和settings.xml的路径:


在搜索框里搜索maven,然后按照下面操作即可。



1.2 配置maven参数


使用idea创建maven项目后,默认会去网络中的中央仓库中下载一些配置资源,那么会很慢,这里需要设置下,那么就不会到中央仓库去下载了一些资源,而是到本地仓库下载。需要设置参数archetypeCatalog。设置方法如下:将-DarchetypeCatalog=internal 设置到Maven–Runner–VM Options中。



参数:-DarchetypeCatalog=internal


说明:


1)-D:在maven中表示设置参数的意思


2)archetypeCatalog:表示设置参数的名字


3)internal:表示设置参数的值


2、创建maven的java工程


使用maven创建的项目可分为3种类型:


1)普通maven项目,就是之前的javase项目–》java project,项目打成jar包运行


2)maven的web项目,项目打成war包运行


3)maven的pom项目,也称为maven的聚合项目(我们这里不讲解,后续maven高级课程讲解)



2.1 创建步骤


  1. 第一步:File–New–Project



  1. 第二步:选择maven然后下一步:



  1. 第三步:填写项目的坐标信息:



附:


GroupID是项目组织唯一的标识符 :一般命名为 域名.项目组名
ArtifactID就是项目的唯一的标识符,表示项目名。 一般是 xxx-xxx   比如maven-java 
version:项目版本号 第一次就是1.0.0  第二次比较多的修改 2.0.0  第三次小的修改 2.1.0 第四次修改很小的bug2.1.1 ....


  1. 第四步:指定项目名称和路径:idea会把项目名中的- 去掉,我们给添加上即可。




2.2 java工程目录简介



说明:


1).idea和maven-java1.iml只要在idea中创建工程都会存在的,idea生成的,不用关心


2)pom.xml是maven的核心配置文件,我们会在这个配置文件配置依赖。下面会讲解


3)main:主代码,在实际开发中是项目上线运行的


a:java:存放java代码的


b:resources:存放配置文件的,相当于以前创建的java工程中的src。例如存放mybatis、数据库连接池的配置文件。这个目录只能存放配置文件。


4)test:存放测试的代码,项目上线之前先进行测试,然后在上线。


a:java:存放编写java的测试的代码,例如junit测试


2.3 运行java代码


1.在main目录的java目录上右键创建包




2.在创建好的包上右键创建java类




3.编写以下代码进行测试:


public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("hello maven..");
    }
}


运行程序:点击main方法左侧的绿色小三角,点击图标1 或者图标2 运行程序:



运行结果:如果控制台上能够正常打印如下信息,则说明工程创建没问题:



四、maven项目构建的生命周期(了解)


1、maven项目构建的生命周期


1.1 生命周期是什么


在Maven出现之前,项目构建的生命周期就已经存在,软件开发人员每天都在对项目进行清理,编译,测试及部署。虽然大家都在不停地做构建工作,但公司和公司间,项目和项目间,往往使用不同的方式做类似的工作。


Maven的生命周期就是为了对所有的构建过程进行抽象和统一。Maven从大量项目和构建工具中学习和反思,然后总结了一套高度完美的,易扩展的生命周期。这个生命周期包含了项目的清理,初始化,编译,测试,打包,集成测试,验证,部署和站点生成等几乎所有构建步骤。


Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际工作,在Maven的设计中,实际任务(如源代码编译)都交由插件来完成。


1.2 maven的三套生命周期


maven拥有三套相互独立的生命周期,分别是clean,default和site。clean 生命周期的目的是清理项目default 生命周期的作用是构建项目site 生命周期的目的是构建项目站点



maven的生命周期都对应着具体的命令如下:


clean生命周期


clean生命周期的目的是清理项目,它包含三个阶段:


  1. pre-clean 执行一些清理前需要完成的工作;


  1. clean 清理上一次构建生成的文件;


  1. post-clean 执行一些清理后需要完成的工作;


default生命周期


default生命周期定义了真正构建项目需要执行的所有步骤,它是所有生命周期中最核心的部分。其中的重要阶段如下:


  1. compile :编译项目的源码,一般来说编译的是src/main/java目录下的java文件至项目输出的主classpath目录中;


  1. test :使用单元测试框架运行测试,测试代码不会被打包或部署;


  1. package :接收编译好的代码,打包成可以发布的格式,如jar和war;


  1. install: 将包安装到本地仓库,供其他maven项目使用;


  1. deploy :将最终的包复制到远程仓库,供其他开发人员或maven项目使用;


site生命周期


site生命周期的目的是建立和发布项目站点,maven能够基于pom文件所包含的项目信息,自动生成一个友好站点,方便团队交流和发布项目信息。该生命周期中最重要的阶段如下:


  1. site :生成项目站点文档;


2、maven生命周期相关命令


我们使用以下命令可以完成maven生命周期,演示生命周期的命令必须在pom.xml所在的目录下打开dos窗口然后输入如下命令进行演示。


1.找到pom.xml文件位置





2.在pom.xml文件位置输入cmd打开dos窗口



mvn clean:调用clean生命周期的clean阶段,清理上一次构建项目生成的文件;
mvn compile :编译src/main/java中的java代码;
mvn test :编译并运行了test中内容 ;
mvn package:将项目打包成可发布的文件,如jar或者war包; 
mvn install :发布项目到本地仓库 ;


2.1、mvn clean


clean命令的作用是清理项目编译或打包后生成的文件,具体对应maven项目中的target目录;


需求:清理存储上一次构建项目生成的文件target.


未清理前:





清理之后:



我们发现不存在target目录了


2.2、mvn compile


compile命令的作用是编译src/main/java中的java代码编译成可直接运行的class文件。编译完成后maven项目会自动创建一个target目录来存储这些文件。



相关文章
|
2月前
|
Java Maven
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
这篇文章是一份关于Maven的安装和配置指南,包括下载、环境变量设置、配置文件修改、IDEA集成Maven以及解决jar包下载问题的方法。
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
|
4月前
|
Java Linux Maven
Maven下载与安装详细教程
Maven下载与安装详细教程
126 0
|
2月前
|
前端开发 Java Maven
【前端学java】全网最详细的maven安装与IDEA集成教程!
【8月更文挑战第12天】全网最详细的maven安装与IDEA集成教程!
71 2
【前端学java】全网最详细的maven安装与IDEA集成教程!
|
5月前
|
Java Maven Spring
【操作宝典】IntelliJ IDEA新建maven项目详细教程
【操作宝典】IntelliJ IDEA新建maven项目详细教程
161 1
|
5月前
|
存储 Java Apache
【maven】maven下载、安装与配置详细教程
【maven】maven下载、安装与配置详细教程
321 1
|
3月前
|
XML Java 测试技术
maven教程(4)
maven教程(4)
26 1
|
4月前
|
Java Apache Scala
Maven 教程
Maven,源自Apache,是一个Java项目管理工具,负责构建、依赖管理和文档生成。它支持多种语言项目,基于POM理念,遵循约定优于配置原则,建议统一的目录结构。主要功能包括构建、文档、报告、依赖管理、 SCM、发布及分发。标准目录如:`src/main/java`放源码,`src/test/java`放测试代码,`target`目录用于输出编译结果,`.m2/repository`为默认本地仓库。
|
4月前
|
Java Apache Scala
Maven 教程
Maven是Apache的开源项目管理工具,基于POM进行Java项目的构建、依赖管理和文档生成。它支持多种语言项目,提供约定优于配置的目录结构,如src/main/java存放源码,src/test/java存放测试代码,目标输出目录在target,而~/.m2/repository是默认本地仓库。
|
3月前
|
JavaScript Java Maven
maven教程(3)
maven教程(3)
25 0
|
3月前
|
存储 Java Maven
maven教程(2)
maven教程(2)
19 0