簡單瞭解 Maven,其實這一篇就夠了!

語言: CN / TW / HK

本文已參與「新人創作禮」活動,一起開啟掘金創作之路。

一、Maven

(1)Maven是什麼?Maven 是一個跨平台的項目管理工具。

(2)作用 - 基於Java平台的項目的構建、依賴包管理和項目信息管理 - 對項目提供一種依賴配置,配置好的項目,Maven會自動從我們設置的倉庫中下載和管理jar包 - Maven也提供了一種標準的項目目錄結構,通過這種約定,大大減少了不同項目的學習成本

(3)運行原理

當我們在項目中配置依賴信息後,Maven會先從本地倉庫查找是否存在相應的jar包,如果不存在則從鏡像私服(前提是在setting.xml中配置了)中下載jar包,如果鏡像私服也沒有,則從中央倉庫進行下載。

Maven 運行過程.png

(4)常用命令

| 命令 | 説明 | | :-----------: | :------------: | | mvn compile | 編譯項目 | | mvn clean | 清除項目的target | | mvn test | 測試 | | mvn package | 打包 | | mvn install | 打包,本地倉庫也會放一份

(5)Maven 項目樹狀結構圖

Maven 項目樹狀結構圖.png

(6)Maven中的座標 - 作用:標識項目或者依賴在倉庫中的位置。 - groupId:項目名稱,一般使用公司域名倒寫,唯一標識某一家公司 - artifactId:Maven項目或模塊名,區分同個公司不同項目 - version:項目版本,區分同個項目不同時期版本

(7)依賴

  • scope

    • compile:默認,所有階段
    • provided:編譯和測試階段使用
    • runtime:測試和運行階段使用
    • test:測試階段使用
  • 傳遞性:自己創建的項目依賴配置的jar包,配置的jar包可能依賴自身其它jar包,比如spring

二、普通Java Web項目轉Maven項目

(1)右擊項目名,選擇Add Framework Support

web2maven-1.png

(2)勾選Maven,點擊OK,項目就變成了maven項目結構,並生成maven項目中的src目錄和pom.xml文件

web2maven-2.png

(3)將原先項目根目錄下resources中的所有配置文件挪到src/main/resources下

這裏提醒一下,如果直接挪動,可能會導致有的文件夾沒有挪過去,所以建議右擊目錄後選擇Show in Explorer,通過系統自帶的文件資源管理器進行操作

web2maven-3.png

(4)在src/main目錄下創建webapp文件夾,然後備份或記錄web/WEB-INF/lib中的jar(目的是為了方便後面添加依賴),之後將lib整個文件夾刪除,再將web下的所有文件夾挪到剛剛創建好的webapp中

同理,測試相關的文件也可以挪到src/test/java目錄下,這裏就不演示了

web2maven-4.png

(5)接下來就是刪掉那些不再需要的目錄,比如out、resources、test、web(resource是根目錄下那個,別亂刪哈)

(6)最後一步:添加依賴!拿出剛剛備份的jar或記錄的jar包信息,然後在pom.xml文件中進行添加,推薦複製jar文件名,然後到Maven Repository這個網站搜索,直接複製依賴的配置信息。(除了jar配置信息,還有tomcat、項目編譯運行版本等)

這裏強調一下,由於普通的web項目可能沒有配置maven的本地庫信息,所以需要配置一下,否則,加載依賴會很慢很慢很慢...

web2maven-5.png

弄好上面那些,我們就可以運行啦!^_^

三、幾個小問題

Problem 1

描述:啟動項目後,訪問資源時控制枱打印如下信息:\ SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". \ SLF4J: Defaulting to no-operation (NOP) logger implementation \ SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

Maven問題1.png

原因:配置依賴時指定了只能測試時使用 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> <scope>test</scope> </dependency>

解決方法:刪除test

Problem 2

描述:點開idea右側Maven,發現項目名有紅色波浪線

Maven問題2.png

原因: Maven安裝目錄的conf/setting.xml文件中有多個mirrors標籤(這裏為了方便演示將多個mirrors標籤一起,實際中可能不是緊挨在一起,可以通過查找該標籤確認)

Maven問題2原因.png

解決方法: 刪除mirrors標籤,只保留一個

Problem 3

描述:啟動項目時,出現以下錯誤信息:不再支持源選項 5。請使用 7 或更高版本。

Maven問題3.png

原因:沒有指定項目編譯運行版本,而Maven默認配置的版本比較低,所以就報錯嘍

解決方法:在pom.xml中添加以下配置信息