讓咱們先回顧下本系列的前3篇博客:html
以前咱們新建的項目,項目所要依賴的第三方jar包都在項目的類路徑下(一般爲lib目錄),以下所示:spring
使用這種方式,咱們沒法知道第三方類庫的依賴關係,好比導入一個特定的jar包時,可能此jar包還依賴於其餘的jar包,其餘的jar包又依賴於更多的jar包,這也是咱們日常遇到的ClassNotFound異常的主要緣由。apache
爲了解決這個問題,咱們急需引入一個項目構建工具。目前主流的項目構建工具備:Ant、Maven、Gradle等。這裏咱們選擇Maven做爲項目構建工具。maven
Apache Maven是一個軟件項目管理工具。基於項目對象模型(Project Object Model,POM)的概念,Maven可用來管理項目的依賴、編譯、文檔等信息。ide
使用Maven管理項目時,項目依賴的jar包將再也不包含在項目內,而是集中放置在用戶目錄下的.m2文件夾下。工具
下載地址:http://maven.apache.org/網站
將下載好的apache-maven-3.6.0-bin.zip解壓到本身喜歡的目錄,我這邊解壓的目錄爲:E:\Program Files\apache-maven-3.6.0。
環境變量彈窗打開方式:計算機--屬性--高級系統設置--「高級」選項卡--環境變量。
1)新建系統環境變量MAVEN_HOME,值爲:E:\Program Files\apache-maven-3.6.0(步驟2中解壓的目錄)
2)編輯系統變量Path,在最後增長:;%MAVEN_HOME%\bin
打開cmd窗口,執行命令:mvn -version,若是可以正確的提示以下的版本信息,說明Maven配置成功。
打開maven下conf文件夾下的settings.xml文件,找到localRepository節點,配置本地Repository路徑,我這裏配置的是:E:\Java\MavenRepository。
<localRepository>E:/Java/MavenRepository</localRepository>
注意:文件中的路徑和Windows下的路徑不同,拷貝過來後要將\替換爲/,並且不能包含中文。
打開IDE後,依次打開File--Settings,而後按照以下圖所示配置Maven:
注意:該設置僅針對當前項目。
由於Maven是基於項目對象模型(Project Object Model,POM)的概念運做的,因此Maven的項目都有一個pom.xml用來管理項目的依賴以及項目的編譯等功能。
<dependencies> </dependencies>
此元素包含多個項目依賴須要使用的<dependency></dependency>
。
<dependency></dependency>
內部經過groupId、artifactId、version肯定惟一的依賴,能夠稱這3個爲座標:
groupId:組織的惟一標識。
artifactId:項目的惟一標識。
version:項目的版本。
<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency>
<properties></properties>
可定義變量在dependency中引用,代碼以下:
<properties> <java.version>1.8</java.version> <spring-framework.version>4.3.18.RELEASE</spring-framework.version> </properties> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring-framework.version}</version> </dependency>
Maven提供了編譯插件,可在編譯插件中涉及Java的編譯級別,代碼以下:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> </plugins> </build>
Maven會自動根據dependency中的依賴配置,直接經過互聯網在Maven中心庫(https://mvnrepository.com/)下載相關依賴包到本地Maven庫,本地Maven庫默認是用戶目錄的.m2目錄,但上面咱們已經把本地Maven庫修改成了:E:\Java\MavenRepository。
若是你不知道你所依賴的jar包的dependency怎麼寫的話,推薦到https://mvnrepository.com/網站檢索。
在IDEA中,選中項目根目錄,依次點擊右鍵-->Add Framework Support,而後在彈出的界面中選中Maven:
此時項目目錄下,會新生成一個pom.xml文件,原始內容以下:
<?xml version="1.0" encoding="UTF-8"?> <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>groupId</groupId> <artifactId>spring-action</artifactId> <version>1.0-SNAPSHOT</version> </project>
將以前的spring-config.xml配置文件遷移至src/main/resources目錄下。
打開File-->Project Structure-->Modules,將以前方式引入的第三方jar包刪除:
而後經過pom文件添加jar包依賴:
<dependencies> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> <version>2.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> </dependency> <dependency> <groupId>com.github.stefanbirkner</groupId> <artifactId>system-rules</artifactId> <version>1.16.0</version> </dependency> </dependencies>
修改完pom文件記得點擊「Import Changes」:
導入完成後的項目結構圖爲:
能夠看出和以前的區別,如今的jar包都由Maven來管理,也能夠查看項目的依賴樹:
<?xml version="1.0" encoding="UTF-8"?> <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.zwwhnly</groupId> <artifactId>spring-action</artifactId> <version>1.0-SNAPSHOT</version> <properties> <java.version>1.8</java.version> <spring-framework.version>4.3.18.RELEASE</spring-framework.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring-framework.version}</version> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> <version>2.1</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> </dependency> <dependency> <groupId>com.github.stefanbirkner</groupId> <artifactId>system-rules</artifactId> <version>1.16.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> </plugins> </build> </project>
上面講解的方式適用於新建項目時不是Maven項目,後續轉爲Maven項目的操做步驟。
其實,咱們能夠經過IDEA,直接新建Maven項目,而後修改pom文件爲以上內容引入Spring等依賴(推薦該方式):
《Java EE開發的顛覆者:Spring Boot實戰》
源碼地址:https://github.com/zwwhnly/spring-action.git,歡迎下載。