一、前言
maven是java的包管理工具,相當於是nodejs中的npm,php中的composer,python中的pip(如果有一個中了,那么你應該就了解了)。應用maven可以方便地引入各種java的第三方類庫(包括Spring、Struts、junit等)和插件(如tomcat等)。
本文采用intelliJ IDEA作為集成開發環境(IDE),在其中創建一個maven的項目,並在其中引入Apache Common Math庫(一個用於科學計算的類庫),完成一些簡單的計算實現。
二、下載maven
軟件下載安裝從來不是難事,先進入maven官網http://maven.apache.org/,然后在左側點進download頁面download.cgi,拖到下面File中,windows系統下載后綴為bin.zip的文件即可。
下載過后解壓到一個文件夾下,我把它放到了C:\MyFolds\Tools\apache-maven-3.5.0下,這個目錄便是maven的根目錄了,里面包含bin、boot、conf、lib這4個文件夾,還有LICENSE、NOTICE和README.txt文件,如下圖。
bin是一個常用的目錄,我們可以把它添加到系統的環境變量中,這樣,我們就可以在命令行中使用了。此時應該來一個”mvn -v“的指令。
當然,這一步對我們之后的操作影響不大,因為java不是一個跟命令行關系很大的語言。
二、在IntelliJ IDEA中集成maven
IntelliJ IDEA應該不用多介紹,除了占用的系統資源多之外,很難再找出什么缺點出來,用起來非常舒服。這里我們假定你已經在IDEA中配置好java。
廢話不多說,我們打開IDEA,然后File->Settings打開Settings(設置)頁面,再找的話應該是Build,Execution,Deployment->Build Tools->Maven,我們也可以通過搜索來快速找到。
需要配置的是其中的Maven home directory,點擊右側的“...”,然后選擇maven的根目錄即可。倒三角里有IDEA集成的maven,也可以選擇,不過不是最新版的。
三、創建一個maven項目
在java設計者的眼中,所有代碼都是項目加配置,maven也不例外,要使用maven需要先創建一個項目,並寫好一個名為pom.xml的配置文件。
先普及一點小知識,POM的英文全稱是Project Object Model,即項目對象模型,我就不說它和DOM(文檔對象模型)類似了,因為這完全就是兩個東西。pom.xml是maven所依賴的項目描述配置文件,在這里可以定義一些項目的相關數據,例如作者、公司和項目名等,當然最關鍵的還是它可以引入類庫的依賴,從而不用再到各大官方網站上下載jar包。
好了,我們回到任務中來。在配置完了maven路徑之后,我們點擊File->New->Project,然后點擊左側的Maven,右側會出現很多archetype,這是maven中很多人貢獻的maven項目構建框架,我們這里不用這個,直接點擊Next進入下一步。
進入下一步,它會讓你填寫三個參數:GroupId,ArtifactId和Version。這個三元組在maven中被稱為坐標,在之后引入類庫時還會用到。為了進行下去,我們不多介紹,只給出填寫的說明。GroupId一般為公司名或公司網址,例如說org.springframework,便是spring框架一般會使用的GroupId(沒公司的話,編你還不會嗎?沒有夢想嗎?),這里我填入com.vastsum,雖然這個公司已經不存在了,但是靈魂仍在傳承。ArtifactId你可以理解為項目名(Artifact是藝術品的意思,可見maven的作者很會起名字),當然如果只是一個組件的話可以用“-”來分割,如spring-context,這里我們就寫demo吧。最后Version填個1.0或者1.1.0的都可以,默認的1.0-SNAPSHOT,表示這是一個快照,還沒正式上線。
進入下一步,設置Project Name和Project location,注意到它會把ArtifactId直接當做項目名,這可以修改,但是也沒必要,我們Finish完成創建。
四、項目概覽
如果不出意外,項目的結構會如下圖所示。其中.idea是IDEA項目配置文件,src目錄用於放源代碼,main是功能代碼,test是測試代碼,兩個文件夾中的java文件夾用於放置java代碼,resources用於放各類資源文件,demo.iml用於描述IDEA項目結構,接下來便是最關鍵的之前所說的pom.xml。External Libraries是擴展類庫。
我們打開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>com.vastsum</groupId>
<artifactId>demo</artifactId>
<version>1.0-SNAPSHOT</version>
</project>
xml配置是java項目的特色,這也標志着java很難脫離IDE工具,估計再厲害的人也記不住那么多的xmlns和xsi吧。
我們大致分析一下這個基本的pom.xml文件。首先,整個文檔的根節點是project,然后一個modelVersion指定這個pom.xml文檔所用的規范,然后便是三個之前見到的元素groupId、artifactId和version。
在IDEA的右側會有一個Maven Project窗口。
五、引入依賴
接下來,我們引入Apache Common Math庫。我們可以到http://mvnrespository.com中搜索類庫,當然,在百度里搜索apache common math maven,第一個結果也是這個。
點擊下面的版本,就能獲取一個maven的dependency的代碼。如下:
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-math3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
<version>3.6.1</version>
</dependency>
我們把這段代碼復制到pom.xml中,用dependencies包裹起來,此時IDEA便會在右下角有提示,點擊“import changes”,IDEA就會自動把所需要的依賴下載下來。
六、測試代碼
最后,我們來嘗試使用這個組件。
在src/main/java中創建文件Mathlib.java:
import org.apache.commons.math3.stat.descriptive.moment.Mean;
public class Mathlib {
public static void main(String[] args)
{
double[] values = new double[] {3,4,66,34,12};
Mean mean = new Mean();
System.out.println(mean.evaluate(values));
}
}
代碼很簡單,定義一個數組,調用Mean類的evaluate方法求這個數組的平均值。
執行,可得結果:
此處僅為說明maven已經成功地將dependency引入項目了。