1.Maven搭建过程再现

# 0.写在前面
①回忆:被jar包支配的恐惧
之前我们每次在创建一个项目并且在编写这个项目的时候,总是不可避免的要对项目导入jar包,通过这些jar包中提供的第三方代码来实现项目功能
小到数据库驱动jar包,大到Spring、MyBatis等等框架的jar包,jar包的数量可谓是浩如烟海……
此外不仅仅是因为我们使用的技术众多,导致jar包的数量变多,在同一个技术下,因为技术版本的不同,其jar包的版本也有所不同……
更加要命的是,不同框架进行整合的时候,甚至还需要其他jar包的配合,例如Spring整合MyBatis……
所以我们在写完一个项目之后会发现: jar包真TM多!
尤其是这个项目在导给别人的时候,还要导出依赖的jar包,那是相当费劲!
不仅如此,因为不同框架之间版本并不是同步更新的,所以很多框架在使用升级版jar包的时候,你会发现与之配合的其他框架的老版本jar包因为兼容性问题都不能用了……
最麻烦的还是你和其他小伙伴配合开发同一个项目的时候,如果没有事先约定好使用框架的版本号,兼容性问题甚至还会发生在同一个项目中:你写的代码在别人的环境下运行不了……
所以将上面的种种问题加以总结,我们得到如下结论:
传统的在项目中手动导入jar包的方式有如下缺点:
    1.jar包太多,项目结构庞大冗余
    2.在一个项目中,我们可能只会用到一个框架的部分功能,但是因为我们不知道这个功能在哪个jar包下,所以我们不得不把这个框架所有的jar包都导入项目,使得项目jar文件冗余
    3.不同框架之间可能需要同一个第三方jar包的不同版本,会引起jar包的冲突
    4.同一框架的不同版本jar包之间不兼容问题
    5.多框架整合的时候需要其他的第三方jar包,这个第三方jar包使用的类型、版本都不好确定
    6.多人开发同一项目的时候,如果没有事先约定好使用jar包的版本,可能导致项目不同模块之间的jar包冲突
 
②Maven的出现:
在痛陈传统导jar包的操作方式之后,我们发现一个问题: 我们亟需一个能替我们管理所有框架、所有版本jar包的工具!
通过上网查询各种资料,各种请教大神之后,果然,天无绝人之路! Maven出现了!
不出所料,Maven同样是运营在Apache之下的一个项目,所以老规矩,Apache官网走起!
Maven的官方资料库:https://maven.apache.org/
 
③Maven的作用:
根据官网给出的内容,Maven简介如下:
Apache Maven is a software project management and comprehension tool. 
Based on the concept of a project object model (POM), Maven can manage a project's build, reporting and documentation from a central piece of information. 
 
简单翻译一下:
Apache Maven是一个软件项目管理和理解(大雾)工具。
基于项目对象模型(简称 POM,这个词很重要,记住!),Maven可以用来从一个中心件(再次大雾)管理项目的创建、报告和文档
在翻译这段文档过后,我觉得我彻底懵逼了……
再次请教各路大神之后,大神们给出一个统一的结论: Maven就是用来帮你导jar包的
好了……我知道了……
那么下面我们就要真正开始下载、安装、配置和使用Maven了!
 
# 1.下载和配置Maven开发环境
①下载Maven:
Maven的官网上给出了很多Maven的下载路径,我们可以在左侧边栏的Download标签下找到:
进入下载列表之后,我们乡下翻动,找到Files这一栏,就会Maven文件的下载位置:
然后我们选择下载其中的 apache-maven-3.6.0-bin.zip这一选项,这一项是Maven的应用程序包,下面的带有src字样的是Maven的原码程序包。
下载完成后,我们会得到这样一个压缩包:
OK,接下来就是解压缩的操作了。和Tomcat相似的是,Maven本身并不需要进行安装,只要解压缩到本地就能够正常使用了(我就喜欢这样的软件,去他大爷的安装包!)
解压缩后,得到这样一个文件夹:
文件夹的内部结构如下:
文件夹功能说明如下:
    bin:Maven的执行命令所在文件夹,类似于JDK中存储java、javac命令的bin文件夹
    boot:Maven自身的引导文件(我们用不上)
    conf:Maven的配置文件夹,之后再配置Maven仓库的时候会用到其中的配置文件
    lib:Maven自身依赖的jar包所在的文件夹
好的,到这一步,Maven的下载和解压缩就已经成功了
注意:本文中使用的目前Maven最新版本3.6.0版本。如果需要使用较为早期的版本的Maven,可以在官网页面左侧边栏的Release Notes中找到
 
②配置Maven环境变量:
说到这里,不得不说,Apache的项目基本上都有一个共通的特性:如果是类似于第三方软件的项目,一般都要配置一下环境变量,例如Tomcat需要配置TOMECAT_HOME等等
相同的是,Maven的环境变量并不是强制配置的,甚至在后面我们使用Eclipse的时候甚至会发现:这个环境变量配置与否实际上影响不大。
但是为了我们后续Maven的正常使用,我还是推荐大家配置一下这个环境变量,毕竟: 不要给自己找麻烦!
Maven环境变量配置步骤如下:
1.在系统变量中添加M2_HOME,指向Maven的安装根目录:
2.然后在Path变量中对M2_HOME进行引用:
怎么样?上述步骤有没有很熟悉的感觉?没错!和配置JDK的JAVA_HOME几乎完全一致!
注意:因为Maven依赖Java运行环境,所以在配置Maven之前一定要保证环境变量中有队JAVA_HOME的配置并在Path变量中对JAVA_HOME变量的引用
到此为止,Maven的配置操作也就结束了,下面我们来验证一下Maven是否能够正常运行
 
③Maven开发环境的测试:
Maven开发环境的测试和之前Java开发环境的测试相似,都是在Windows命令控制台下完成的:
1.启动命令控制台,随便定位到哪个路径下都可以:
2.输入如下命令:mvn --version,敲回车
如果命令控制台中出现上述Maven的配置信息,那么恭喜你!你的Maven开发环境搭建成功!
 
# 3.Maven的运行原理
在我们正式开始使用Maven之前,先让我们简单了解下Maven的运行原理,这样有助于我们后续更为轻松的使用Maven
 
①Maven的jar包从哪里来:
既然我们使用Maven的目的是为了不再手动向项目导入jar包,而是将这个工作交给Maven取处理,那么我们自然而然想到一个问题:
Maven的jar包是从哪里来的?
答案是: jar文件仓库
 
②中央仓库、私有仓库和本地仓库的概念:
前面说过,Maven的jar包都是从仓库中得到的,那么这个仓库在什么位置?
说到Maven仓库的概念,不得不说一下远程仓库、私服仓库和本地仓库的概念:
    中央仓库:由Maven项目本身指定的一个服务器,在这个服务器上有目前几乎所有Java能够用到的第三方类库的jar文件,同样也包括Maven自己本身所需的所有jar包
                      当我们在创建一个Maven项目的时候,Maven会从这个服务器远程下载项目中所需的所有jar包
    私有仓库:虽然中央仓库是最全面、最权威的jar包仓库,但是很多公司在构建项目的时候,会使用自家公司的框架,这些框架的jar包在中央仓库是不存在的
                      那么此时这些公司就需要自己创建一个仓库,将自己的jar包都放在这个仓库中。私有仓库仓库同时也可以存储下载自中央仓库的其他开源项目的jar包
                      私有仓库并不是一定存在的,有没有私有仓库很大程度上取决于公司的财力……不是,是公司的项目需求
    本地仓库:如果每次需要什么jar包就去中央仓库或者私有仓库中进行下载,那么就有些不划算了,所以Maven会在当前这台配置了Maven的计算机上也设定一个仓库
                      这个仓库专门保存当前计算机所有项目中使用过,并且已经从中央仓库或者私有仓库中下载过的jar文件。
                      也就是说,Maven会把当前计算机也当成一个仓库使用,这样一来就能够重复利用已经下载过的jar包,不需要每次都去服务器中下载
总结:中央仓库和私有仓库统称远程仓库,如果需要这些仓库中的jar包,那么是必须要进行网络下载的;本地仓库是存在于当前计算机中的,其中的jar包都是已经下载好的,可以直接用
 
③Maven查找jar包的顺序:
前面介绍了Maven的三种仓库类型,那么我们在创建一个Maven项目的时候,Maven到底是按照什么样的顺序在这些仓库中查找jar包的呢?
首先记住这个顺序: 本地仓库 -> 私有仓库 -> 中央仓库
下面看一张图:
下面我们说明一下Maven查找jar文件的顺序:
    第1步:Maven首先访问本地仓库,在本地仓库中查找有没有需要的jar包,如果有,则直接导入项目;如果没有,执行第2步
    第2步:Maven在本地仓库没有所需jar包的情况下,会不会访问私有仓库是不一定的。前面我们说过,不是所有的公司都会建立自己的私有仓库
                 所以我们一般会在Maven目录的conf文件夹下的setting.xml配置文件中说明一下,是不是要访问私有仓库
                 如果需要访问,那么私有仓库的位置在哪里。如果私有仓库下存在所需jar文件,那么Maven会将这些jar文件首先下载到本地仓库之后再导入项目之中
    第3步:如果我们不使用私有仓库,或者私有仓库中也不存在我们需要的jar文件,那么Maven会直接去中央仓库中查找我们所需的jar包
                 可以说只要是常见的jar包,那么中央仓库中就一定存在。
                 如果是通过私有仓库访问的中央仓库,那么私有仓库会首先将需要的jar包下载到私有仓库中,然后Maven才会再次从私有仓库中下载这些jar包到本地仓库
                 进而将这些jar包加载进入项目当中
所以总结起来,Maven查找jar包的方式就是: 雁过拔毛!经过这样一番查找和下载,最终能够保证Maven的私有仓库和本地仓库中都存在我们需要的jar包了
然后在下一次需要这些jar包的时候,就可以优先从本地仓库加载,避免网络下载,提高项目创建效率
 
# 4.在Eclipse中配置Maven开发环境
很多网上的Maven教程都是首先介绍如何手动搭建一个Maven项目,然后测试运行的,这是因为Maven本身是一个技术和平台无关的工具
也就是说: Maven可以为任何项目,在任何开发平台(常见的有Eclipse、MyEclipse和IDEA)上提供jar包 管理功能
但是……这年头谁还不用个编辑工具啊!
在这里我们以Eclipse为例,讲述搭建Maven项目的方式(IDEA没用过,不太会……)
 
①Eclipse版本的选择:
近期版本的Eclipse已经集成了Maven框架,所以在这里推荐大家下载和使用Eclispe的近期版本
Note:Eclispe下载网址:https://www.eclipse.org/downloads/packages/
 
②在Eclipse上配置自定义Maven:
说先来说一下这个步骤的原因:
Eclipse本身已经集成了Maven,但是这个Maven并不是我们在之前步骤中下载并使用的Maven,而是Eclispe自己的Maven组件
我们重新配置Eclispe下Maven的原因如下:
    1.Eclipse中使用的Maven可能并不是最新版本的,我们可以下载并安装最新版本的Maven并替换它
    2.Eclispe默认的Maven组件在下载jar文件到本地仓库的时候使用的路径是Maven默认的jar文件下载路径
       这个下载路径默认在:C:/用户/你的用户名/.m2/repository这个文件夹下面
       我们都知道,C盘的空间占用越多,系统的运行速度就越慢,我们不应该将下载的jar文件都放在这个文件夹当中
所以综上所述:自己动手,丰衣足食!让我们将Eclispe中的Maven配(tiao)置(jiao)成为我们想要的样子
1.找到Eclispe中Maven的配置:
具体操作是:Window -> Preferences -> Maven(展开) -> Installations
2.添加已经安装在本机上的Maven到Eclispe:
首先我们点击窗口右侧的add选项:
然后在弹出的窗口中选择自己在本机中安装Maven的路径:
注意:在选择Maven安装路径的时候,我们只要选择到Maven的安装路径即可,不必向下深入选择bin文件夹
然后点击Finish按钮,回到之前的界面中,勾选新出现的我们自己的Maven选项
到此为止,我们已经成功在Eclipse上配置了我们自己的Maven软件
想要创建Maven项目了吗?想得美,配置没完事儿呢!
3.修改本地仓库的位置:
之前我们说过,Maven在下载jar文件到本地仓库的时候,是将这些jar文件下载到C盘下的文件夹中的
为了让Maven以后下载的jar文件存放在别的位置,我们必须重新设定Maven本地仓库的位置
这个配置并不仅仅是在Eclispe中完成的,而是需要再去Maven安装目录下修改一些配置文件
首先找到Maven安装目录,进入其中conf文件夹,打开其中的settings.xml配置文件(我是用UE编辑的):
然后向下翻找,在<settings ...>的下面找到被注释掉的<localRepository>标签,这个标签就是用来修改本地仓库位置的:
将这个标签从注释状态改变为有效状态(将这一段最下面的-->向上挪一行):
然后将<localRepository></ localRepository>这一对标签中的内容,改变为新的本地仓库的路径(例如我的是:E:/Maven/repository):
注意:Maven的本地仓库的文件夹位置没有固定要求,只要找一个空间相对充足的磁盘,并且保证这个位置自己能够找到就行
到此为止,保存文件,关闭这个settings.xml文件就行了,对于Maven配置文件的修改暂时告一段落(后面还得回来继续改)
回到Eclispe中,完成我们未竟的事业(希望刚才的界面各位小伙伴们没有关掉)
在Maven界面中,点选最下的User Settings选线,出现这个界面:
然后将最上面的Global Settings选项选择成为刚才咱们修改过的那个settings.xml文件的路径(我的是:D:/Tools/Maven/apache-maven-3.6.0/conf/settings.xml):
注意:上述配置完成后,一定要重新启动Eclispe,否则上述配置不生效!
一气呵成,打完收工!到此为止,Eclispe中所有对自定义Maven的配置就已经全部结束了!
恭喜你,现在你Eclispe中的Maven,已经配(tiao)置(jiao)了你想要的样子! ご主人様、どうぞよろしく!
 
# 5.Maven项目的创建、运行和调优
通过上面的步骤,我们已经将Eclispe中的Maven开发环境搭建起来了,那么接下来当然是赶紧创建一个Maven项目测(shuang)试(shuang)了!
 
①创建一个Maven项目:
在Eclispe的项目列表中,单击右键 -> new -> other -> 搜索Maven -> Maven Project
然后在出现的界面中进行如下选择:
在下列界面中,选择maven-archetype-qickstart选项,这一项表示我们使用的Maven骨架:
(关于Maven的骨架是什么,有什么用,我们将在后续的内容中进行介绍)
在下列界面中,填写Group Id和Artifact Id两个选项,并选择Version为0.0.1-SNAPSHOT,其中:
Group Id:填写方式为com.公司名.项目名,例如:com.oracle.MavenTest
Artifact Id:填写内容就是当前的项目名称,一般和Group Id中的最后一段取值相同,例如:MavenTest
在这里我们只要知道: Artifact Id的取值相当于当前项目的项目名,其他内容的作用和具体写法我们会在后续内容中进行介绍:
点击Finish,Eclispe将自动开始创建Maven工程目录:
然后我们将进入漫长的等待……等待……等待……
切记:在Maven项目创建完成之前,不要对项目轻举妄动!要耐心等待……
我***的!在等待了半个多小时之后,我实在是等不下去了!这什么速度!简直慢出翔了!我家可是10M/s的网速啊!^&^*&^(^%&$##$#%%&^……
在多方查验资料之后,我终于发现为什么我们在创建Maven项目的时候回这么慢了
 
②Maven项目创建速度调优:
实际上我们在第一次创建Maven项目的时候,Maven会自动去中央仓库下载创建项目所需的jar文件到本地仓库中
但是,这个中央仓库的服务器在国外……你想到了什么?对……你懂的……
但是天无绝人之路,经过多方查证,我得知在国内也有很多科技公司的大佬(例如*里巴巴集团旗下的云栖社区),创建了自己的Maven仓库造福于广大程序员
那么我们能不能更改访问的中央仓库路径呢?答案是不能!不能!不能!
Maven下定义的访问中央仓库的路径是Maven写死的,我们是无法通过配置文件修改的……
但是,我们可以在配置文件中添加这些国内Maven仓库的 镜像(Mirror)……
镜像是什么:我们可以将镜像理解为搭建在国内的Maven中央仓库,通过访问这些国内中央仓库下载jar文件,可以获得和访问Maven官方中央仓库下载jar文件一样的结果
但是至于镜像服务器是如何运作的,这个问题关我鸟事!只要好使不就行了!
说干就干!我们接下来就通过修改配置文件的方式,配置Maven访问的中央仓库镜像,让Maven从国内下载我们需要的jar文件!
1.找到Maven安装路径下conf文件夹下的settings.xml配置文件(是不是很眼熟?)往下翻找到<mirrors></mirrors>这组标签:
这一组标签并未处于注释状态,只是其中会有不少说明信息,看不懂的同学可以自动忽略
2.在百度查找国内Maven进行的配置信息:
<mirror>
    <id>nexus-aliyun</id>
    <name>Nexus aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
</mirror>
 
注意:实际上在百度中我们能够查询到很多其他镜像的配置信息,但是阿里云栖社区社区的这个镜像是目前我测试速度最快、更新最及时也是最稳定的镜像!
3.将上述配置信息拷贝到配置文件的<mirrors></mirrors>标签中:
4.关闭Eclispe(看见还在被国外中央仓库按在地上摩擦摩擦的Eclispe,我回手就是一个结束进程)
5.进入之前配置的Maven的本地仓库下,将下载的残(ban)缺(la)不(ke)全(ji)的jar文件全部删除:
注意:此时有的小伙伴的本地仓库中会有比我截图中更多的文件夹,那也全部删除,一个不剩!
6.重新启动Eclispe,删除之前创建失败的Maven项目,重建Maven项目:
注意:如果在创建Maven项目的时候提示已经存在一个同名的Maven项目,创建失败,那么就去工作空间下,删除掉之前创建的同名Maven项目
怎么样?这一次是不是很快?好了,不用谢我!
7.下面是一些其他国内能够正常访问的镜像,值得收藏:
<mirror>
    <id>jboss-public-repository-group</id>
    <mirrorOf>central</mirrorOf>
    <name>JBoss Public Repository Group</name>
    <url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror>
<mirror>
    <id>ibiblio</id>
    <mirrorOf>central</mirrorOf>
    <name>Human Readable Name for this Mirror.</name>
    <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url>
</mirror>
<mirror>
    <id>central</id>
    <name>Maven Repository Switchboard</name>
    <url>http://repo1.maven.org/maven2/</url>
    <mirrorOf>central</mirrorOf>
</mirror>
<mirror>
    <id>repo2</id>
    <mirrorOf>central</mirrorOf>
    <name>Human Readable Name for this Mirror.</name>
    <url>http://repo2.maven.org/maven2/</url>
</mirror>
 
③Maven使用的JDK版本调优:
在展开Maven项目目录结构的时候,我们有如进入了一片广阔的新天地:
但是……貌似哪里不太对劲……
我擦!为啥这个项目使用的JRE类库版本是1.5的?!!!
这可太可(che)怕(dan)了!我们辛辛苦苦将JDK版本升级到Java 8版本,就是为了使用其中各种神(niu)乎(bi)其(shan)技(shan)的新特性!
现在我们正在使用JDK 1.5版本编译和运行我们的Maven项目,那还使用个毛线啊!
不行!还得修改配置文件!
1.第三次找到Maven安装路径下的conf/settings.xml配置文件(我就不截图了……):
2.找到其中的<profiles></profiles>标签(这个标签中有很多注释说明,不用管):
3.将下面的代码拷贝到<profiles></profiles>标签中:
<profile>
    <id>jdk-1.8</id>
    <activation>
        <jdk>1.8</jdk>
        <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    </properties>
</profile>
 
注意:上述代码的含义就是告诉Maven,在创建项目的时候,默认使用Java 8版本对项目进行编译和运行
但是需要注意的是,我们的计算机中必须已经安装了Java 8版本的JDK和JRE
4.重启Eclispe,在创建的Maven项目上单击右键 -> Maven -> Update Project...:
然后点击OK:
最后我们能够看到,Maven项目使用的JRE版本变成了JRE-1.8版本:
5.之后创建的所有Maven项目都将默认使用JDK 1.8版本创建项目:
到此为止,我们又解决了一个重大问题,Eclispe中的Maven在我们手中变得更加近乎完美了!
注意:当我们再次创建Maven项目的时候,我们会发现这一次的创建速度比之前快得多,原因是Maven已经将需要使用的jar文件下载到本地仓库中了
这一次创建Maven项目的时候,不需要再次去远程的中央仓库进行下载,直接使用本地仓库中的jar文件即可,所以项目创建速度会快很多
 
④Maven项目基本结构目录:
Maven项目已经创建成功了,我们来简单的认知一下Maven项目的目录结构,至少让我们知道在Maven项目中,Java代码写在哪里,测试代码写在哪里
如上图所示,就是一个Maven项目最为直观的目录结构。下面我们对这个结构中比较重要的部分进行介绍
1.Maven项目的最简目录结构:
原生的Maven项目目录结构比上图展示的目录结构要简单的多,上图中的许多结构是Eclispe为我们添加的。
原生Maven项目目录结构:
Maven项目:
    |---src
    |----|---main
    |----|----|---java
    |----|----|---resources
    |----|---test
    |----|----|---java
    |----|----|---resources
    |---pom.xml
 
2.src目录:
src目录下存放着当前Maven项目的所有java原码内容,其中包括两个子文件夹:main文件夹和test文件夹
    main文件夹:Maven项目主体代码的存放位置,包含两个子文件夹:java文件夹和resources文件夹
    test文件夹:Maven项目的测试代码存放位置,同样包含两个子文件夹:java文件夹和resource文件夹
main文件夹和test文件夹下的两个子文件夹:java文件夹和resources文件夹,他们的作用如下:
    java文件夹:存放java原码的文件夹,在这个文件夹下,我们可以向之前使用Eclipse时一样,创建包结构,在包下创建.java格式的原码文件
    resources文件夹:资源文件夹,用来存放项目中所需的资源文件,类似图片、配置文件等
注意:在Eclispe为我们创建的Maven项目中,两个java文件夹下都已经创建了相应的包路径,如果我们不想使用这些包路径,可以手动删除这些包路径
3.pom.xml文件:
pom.xml文件是整个Maven项目的灵魂!Maven项目就是根据这个文件中对jar包的配置声明,去仓库中下载jar文件的。
我们看一下pom.xml配置文件的内容:
<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

    <!-- 当前项目坐标 -->
	<groupId>com.oracle.MavenTest</groupId>
	<artifactId>MavenTest</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>jar</packaging>

	<name>MavenTest</name>
	<url>http://maven.apache.org</url>

    <!-- 项目配置信息 -->
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
	</properties>

    <!-- 项目中jar文件的依赖 -->
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>
 
上述配置文件代码中,我们目前可以忽略其他选项(不是让你删除,千万别删!),这些选项的作用我们会在后续进行详细介绍
我们目前只要关注如下一组标签即可:
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>
</dependencies>
 
Maven通过<dependencies></ dependencies>标签来决定,当前Maven项目需要哪些jar文件,以及这些jar文件的版本
<dependencies></ dependencies >标签中的每一组<dependence></ dependence >子标签,表示的就是本项目中要用到的一组jar包
从本例来说,这个项目中需要一组junit的jar文件,使用的junit的jar文件版本是3.8.1版本
 
⑤测试Eclispe下的Maven项目:
经过前面的千辛万苦,我们总算是把Eclispe中的Maven环境搭建成功,并且能够保证快速的创建基于Java 8版本的Maven项目了,而且也知道在哪里写代码了
那么下面,我们就来尝试一下,使用刚刚搭建好的Maven环境,写一个Maven版本的“Hello Maven”
注意:在Eclispe为我们创建的Maven项目中,main文件夹下的java子文件夹中,已经存在了一个App.java的文件;同样,在test文件夹下的java子文件夹中也存在了一个AppTest.java的文件
这两个文件是Eclispe为我们创建的测试文件,如果不想使用,我们可以直接删除这两个文件
1.创建自己的开发包结构和测试包结构:
删除掉Eclispe为我们创建的包路径结构,创建自己的包路径结构:
原码类和测试类代码如下:
原码类:
public class HelloMaven {
	
	private String msg = "Hello Maven";
	
	public void sayHi() {
		System.out.println(msg);
	}
	
}
 
测试类:
public class TestHelloMaven {
	
	@Test
	public void testHelloMaven() {
		
		HelloMaven hm = new HelloMaven();
		hm.sayHi();
		
	}
	
}
 
注意:此时的@Test注解标签会报错,因为我们还没有导入相应的jar包
2.修改pom.xml配置文件,添加对junit的jar文件依赖:
所谓的项目对jar文件的 依赖,实际上就是用来说明这个项目要用到哪些jar文件、有的是哪个版本的一段 说明信息
这段说明信息写在之前我们见过的Maven项目的pom.xml文件中
Maven项目会自动根据这个pom.xml文件中写入的jar文件依赖,去各个仓库中下载对应的jar文件
目前Maven项目的pom.xml文件中,已经存在一组对junit的jar文件的依赖(前面举的那个例子就是)
我们现在要做的,就是将这个依赖中的版本号从3.8.1改变为4.12,以便我们能够使用新版本的测试junit工具
<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
    <!--修改使用的junit版本为4.12版本,原来是3.8.1版本-->
	<version>4.12</version>
	<scope>test</scope>
</dependency>
 
注意:在这一步结束之后,记得回到测试用的java文件中,对junit工具下的@Test注解标签进行导包:
3.运行上述Maven项目:
Maven项目的运行和一般Java项目的运行时相似的,只要在项目上单击右键,选择Maven的运行方式即可:
运行后出现如下结果:
如果再次以Maven test的方式运行这个项目,我们会发现:下载jar文件的过程没有了,因为所有必须的jar文件已经被下载到本地仓库中
如果需要调用,那么Maven会自动从本地仓库中下载这些jar文件到项目中:
4.查找和下载jar文件依赖:
如同上文所述,我们能够通过修改pom.xml文件中,<dependencies></dependencies>标签下的内容来为Maven工程添加jar文件依赖
但是,这些jar文件依赖的格式是一定的,那我们应该从哪里获得这些依赖的内容呢?(可以试试自己照葫芦画瓢来一个,但是成功的概率比较低……)
有个比较常用的Maven依赖查询网站:
https://mvnrepository.com/
 
通过这个网站,我们可以查询到我们需要的jar文件的依赖的写法
下面以log4j这个项目为例,我们在上述网站中查询使用log4j时需要添加的依赖应该怎么写:
注意:实际上还有一个网站:https://search.maven.org,也可以用来查询Maven的jar文件依赖,但是这个网站的查询方式比较晦涩难懂,在此不做推荐
到此为止,恭喜各位,我们的Maven项目已经创建并运行成功了!

猜你喜欢

转载自www.cnblogs.com/noyitela/p/10386352.html