Java界使用最广的依赖管理工具:Maven快速上手教程

Maven是Java界使用最广泛的依赖管理工具,几乎所有的Java类库和项目都使用Maven的项目模型。可以说Maven是学习Java必要的一个知识点。那么就让我们来看看如何使用Maven吧。


Java界使用最广的依赖管理工具:Maven快速上手教程


安装Maven

Maven的安装非常简单,访问下面的网页,选择zip包下载。下载完成后,放到合适的位置解压,然后将文件夹中的bin目录添加到环境变量中,以便可以在命令行中运行Maven。

<code>

http

:/<code>


Java界使用最广的依赖管理工具:Maven快速上手教程

选择zip包下载即可

或者如果你使用chocolatery或者scoop这样的包管理器,也可以直接使用命令行方式安装Maven。命令行方式安装Maven有一个好处就是包管理器会帮我们配置好环境变量,不需要手动配置。


Maven安装成功以后,打开一个cmd或者powershell窗口,运行以下命令,如果成功显示出Maven的版本号,说明Maven安装成功了。

<code>

mvn

-v/<code>


Java界使用最广的依赖管理工具:Maven快速上手教程

命令的输出如图所示

Maven的配置

安装好了Maven,先不要着急使用。默认情况下Maven会连接国外的仓库,下载速度非常慢。为了加快下载速度,最好先修改Maven配置文件。默认配置文件的位置是~/.m2/settings.xml。如果没有改文件夹,需要先创建一下。注意Windows系统无法直接创建以小数点开头的文件名,因此需要在powershell命令行中运行。

<code>

mkdir

~/.m2

notepad

settings.xml

/<code>

然后复制下面文件的内容。如果你不想让Maven将类库缓存放到用户目录下。可以取消localRepository标签的注释,然后设置你喜欢的目录。另外如果你使用的JDK版本不是11的话,就将profile标签中的java.version版本改成自己的。

<code> 

<

settings

xmlns

=

"http://maven.apache.org/SETTINGS/1.0.0"

xmlns:xsi

=

"http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation

=

"http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"

>

<

pluginGroups

>

pluginGroups

>

<

proxies

>

proxies

>

<

servers

>

servers

>

<

mirrors

>

<

mirror

>

<

id

>

aliyunmaven

id

>

<

mirrorOf

>

*

mirrorOf

>

<

name

>

阿里云公共仓库

name

>

<

url

>

https://maven.aliyun.com/repository/public

url

>

mirror

>

mirrors

>

<

profiles

>

<

profile

>

<

id

>

jdk

id

>

<

properties

>

<

java.version

>

11

java.version

>

<

maven.compiler.source

>

${java.version}

maven.compiler.source

>

<

maven.compiler.target

>

${java.version}

maven.compiler.target

>

<

maven.compiler.compilerVersion

>

${java.version}

maven.compiler.compilerVersion

>

<

maven.compiler.release

>

${java.version}

maven.compiler.release

>

<

project.build.sourceEncoding

>

UTF-8

project.build.sourceEncoding

>

<

project.reporting.outputEncoding

>

UTF-8

project.reporting.outputEncoding

>

<

maven.compiler.encoding

>

UTF-8

maven.compiler.encoding

>

<

downloadSources

>

true

downloadSources

>

<

downloadJavadocs

>

true

downloadJavadocs

>

properties

>

<

repositories

>

<

repository

>

<

id

>

spring

id

>

<

url

>

https://maven.aliyun.com/repository/spring

url

>

<

releases

>

<

enabled

>

true

enabled

>

releases

>

<

snapshots

>

<

enabled

>

true

enabled

>

snapshots

>

repository

>

<

repository

>

<

id

>

spring

id

>

<

url

>

https://maven.aliyun.com/repository/spring-plugin

url

>

<

releases

>

<

enabled

>

true

enabled

>

releases

>

<

snapshots

>

<

enabled

>

true

enabled

>

snapshots

>

repository

>

repositories

>

profile

>

profiles

>

<

activeProfiles

>

<

activeProfile

>

jdk

activeProfile

>

activeProfiles

>

settings

>

/<code>

完成后保存即可。这样一来,Maven就会使用国内的阿里云镜像,下载速度会非常快。


使用Maven创建项目

接下来就可以使用Maven创建项目了,平时我们一般都是直接用IDE的创建项目功能,很少用Maven的创建项目命令。不过还是有必要了解一下Maven的创建项目命令:

<code>

mvn

archetype

:generate

/<code>

该命令会以交互式方式运行,接下来会询问你要创建的项目模板,选择默认的7即可;然后输入groupId、artifactId、版本号、包名等信息。前三者唯一标识了一个Maven包,不管是我们自己开发项目,还是引用项目都需要明确指定这三个参数。全部选择完毕之后,一个新的项目文件夹就生成了。


Java界使用最广的依赖管理工具:Maven快速上手教程

生成了新的项目

使用合适的IDE打开项目,可以看到项目具有类似下面的结构。简单介绍一下这个结构:src目录下是所有的源代码;main目录下是项目主要的代码;test目录下是项目的测试代码;pom.xml文件非常重要,它是Maven的核心描述文件,定义了Maven项目的所有重要信息。

<code>my-app
| 
` 
    | 
    |   ` 
    |       ` 
    |           ` 
    |               ` 
    |                   ` 
    ` 
        ` 
            ` 
                ` 
                    ` 
                        `/<code>

那么再来看看pom.xml文件内容是什么样的吧。它是一个XML格式的文件,前面一部分定义了项目的信息,也就是我们在创建项目时候指定的groupId等。dependencies定义了项目要使用的各种依赖项,也就是第三方类库。

<code>

<

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

>

yitian.study

groupId

>

<

artifactId

>

hello

artifactId

>

<

version

>

1.0-SNAPSHOT

version

>

<

packaging

>

jar

packaging

>

<

name

>

hello

name

>

<

url

>

http://maven.apache.org

url

>

<

properties

>

<

project.build.sourceEncoding

>

UTF-8

project.build.sourceEncoding

>

properties

>

<

dependencies

>

<

dependency

>

<

groupId

>

junit

groupId

>

<

artifactId

>

junit

artifactId

>

<

version

>

3.8.1

version

>

<

scope

>

test

scope

>

dependency

>

dependencies

>

project

>

/<code>

这里默认的junit类库比较旧,我们可以将版本号修改为4.13,这是目前最新的junit4版本。然后输入下面的命令重新编译项目,Maven会检查依赖项,如果发现本地不存在的依赖项就会先把它下载下来。因为我们用了阿里云镜像,所以下载和编译过程应该很快就可以完成了。

<code>

mvn

compile/<code>

接下来就可以运行项目了,这样一个成功的Maven项目就创建完毕了。


Java界使用最广的依赖管理工具:Maven快速上手教程

我使用的是Intellij IDEA,社区版也支持maven,完全够用了


添加和管理依赖

那么Maven是怎样让我们更方便的开发项目的呢?如你所见,我们只要将项目需要的依赖项添加到pom.xml中,Maven就可以自动下载和配置依赖的类路径。之后项目就可以直接运行了,简直和变魔术一样!如果你还在使用原始的复制粘贴jar包的方式,我建议你马上切换到Maven上来,享受它的便利功能。


默认情况下,Maven会将包下载到配置文件指定的localRepository,默认路径是~/.m2/repository。每个包会按照包名分类存放,搜索和查找也很方便。


Java界使用最广的依赖管理工具:Maven快速上手教程

默认的包保存位置

依赖项还有作用域这个特性,默认的作用域是compile,也就是包在编译和运行的时候都可见,大部分依赖也都使用这个作用域。test作用域只在test的时候可见,打包的时候不会包括,测试用的依赖会使用这个作用域。还有个provided作用域,指定一些开发时候需要、但是部署时不需要的包,一般用于开发servlet项目,servlet依赖是我们开发时必须的,但是部署项目的时候,会由servlet容器提供这些依赖。


要搜索依赖的话,可以使用Jetbrains新推出的Package Search网站,利用它可以搜索各种依赖项。地址如下:

<code>

https

:/<code>


Java界使用最广的依赖管理工具:Maven快速上手教程

Jetbrains 包搜索功能

例如我们搜索一下junit,然后点进来看看,包搜索功能将依赖项的各种信息都聚合到了一起。在左边可以查看项目的源码地址,右边列出了Maven和Gradle的依赖代码块,可以直接复制粘贴到项目中。


Java界使用最广的依赖管理工具:Maven快速上手教程

依赖详细信息

再举个例子,我们在项目中添加Gson的依赖,注意要添加到dependencies,和其他dependency平级。

<code>        

<

dependency

>

<

scope

>

compile

scope

>

<

groupId

>

com.google.code.gson

groupId

>

<

artifactId

>

gson

artifactId

>

<

version

>

2.8.6

version

>

dependency

>

/<code>

然后将Main代码修改成类似下面这样的:

<code>

package

yitian.study;

import

com.google.gson.Gson;

public

class

App

{

public

static

void

main

(String[] args)

{ Gson gson =

new

Gson(); System.out.println(gson.toJson(

new

User(

"yitian"

,

"123456"

))); } }

class

User

{

private

String username;

private

String password;

public

User

(String username, String password)

{

this

.username = username;

this

.password = password; }

public

String

toString

()

{

return

"User{"

+

"username='"

+ username +

'\''

+

", password='"

+ password +

'\''

+

'}'

; } }/<code>

然后再次maven compile,并运行一下项目,可以发现,Maven已经帮我们下载并配置好了项目依赖,这次依然可以完美运行。这就是Maven强大的依赖管理功能。

测试项目

Maven项目结构中还专门为代码测试留了一个专门的文件夹,用Maven进行单元测试也同样方便。将测试代码修改成类似下面的样子:

<code>

package

yitian.study;

import

com.google.gson.Gson;

import

org.junit.Before;

import

org.junit.Test;

import

static

org.junit.Assert.assertEquals;

public

class

AppTest

{

private

static

Gson gson =

new

Gson();

private

static

User user;

public

void

setUp

()

{ user =

new

User(

"yitian"

,

"123456"

); }

public

void

test

()

{ String expected =

"{"username":"yitian","password":"123456"}"

; assertEquals(expected, gson.toJson(user)); } } /<code>

然后运行下面的命令即可使用Maven执行单元测试。假如有多个测试的话,Maven会执行所有这些测试。如果出现失败的测试,Maven也会给出相应的提示信息。

<code>mvn 

test

/<code>

利用这一功能,我们可以放心的编写大量的测试用例,使用Maven一键帮我们执行测试。Maven的这一特性也可以方便的集成到持续集成系统中:推送项目代码以后自动测试,测试通过后自动发布,极大简化开发流程。

Java界使用最广的依赖管理工具:Maven快速上手教程

好了,相信大家看了本文也了解了Maven的一些核心功能,希望本文对大家有所帮助。如果有什么问题,也可以在评论区留言,大家一起交流学习!


分享到:


相關文章: