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的一些核心功能,希望本文對大家有所幫助。如果有什麼問題,也可以在評論區留言,大家一起交流學習!


分享到:


相關文章: