CentOS Maven安裝與使用
阿新 • • 發佈:2019-02-17
1、安裝Maven
1.首先到Maven官網下載安裝檔案,下載檔案為apache-maven-3.3.9-bin.tar.gz,點選連結可以直接下載,不需要積分的喲,然後將下載的檔案通過FTP工具存放到CentOS伺服器裡。
2.進入下載資料夾,找到下載的檔案,執行如下命令解壓
tar -xvf apache-maven-3.3.9-bin.tar.gz
解壓後的資料夾名為apache-maven-3.3.9
3.配置環境變數,編輯/etc/profile檔案,新增如下程式碼
MAVEN_HOME=/home/test/pub/maven/apache-maven-3.3.9
export MAVEN_HOME
export PATH=${PATH}:${MAVEN_HOME}/bin
4.儲存檔案,並執行如下命令使環境變數生效
source /etc/profile
5.在控制檯輸入如下命令,如果能看到Maven相關版本資訊,則說明Maven已經安裝成功
mvn -v
2、配置Maven
MAVEN_HOME/conf目錄下settings.xml檔案是Maven的配置檔案,我們在這裡主要配置如下兩個引數:
配置本地倉庫:
<localRepository>/home/test/pub/maven/repo</localRepository>
配置鏡象:
本例中<mirrorOf>的值為central,表示該配置為中央倉庫的映象,任何對於中央倉庫的請求都會轉至該映象,使用者也可以使用同樣的方法配置其他倉庫的映象。
<mirror>
<id>nexus</id>
<name>internal nexus repository</name>
<url>http://xxx.xxx.xxx.xxx:8081/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
3、使用Maven建立專案
無論是學習語言還是框架,先來一個Hello World基本上已經是套路了,我們也通過構建一個Hello World專案來了解如何使用Maven。首先通過maven建立helloworld專案
mvn archetype:generate -DgroupId=helloworld -DartifactId=helloworld
生成的專案目錄如下,其中src/main/java是原始碼目錄,src/test/java是測試檔案目錄。
一共只有三個檔案,開啟這三個檔案,可以看到App.java中已經寫好了一個Hello World程式,而AppTest中是Junit單元測試的程式碼,至於pom.xml,則給出了專案的一些基本資訊以及依賴關係。
helloworld/
├── pom.xml
└── src
├── main
│ └── java
│ └── helloworld
│ └── App.java
└── test
└── java
└── helloworld
└── AppTest.java
這裡主要看一下pom.xml檔案,內容如下
<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>helloworld</groupId>
<artifactId>helloworld</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>helloworld</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>
在pom.xml檔案中,首先描述了專案的定義,groupId:artifactId:packaging:version這個四元組能夠唯一標記一個專案。我們不僅可以用這個四元組來標記我們的專案,也可以用來標記其它的專案,比如用來描述專案依賴關係。perperties中定義了專案的屬性,也可以在這裡定義變數並在其它的地方引用。至於最後的dependencies,則是描述了專案的依賴關係,Maven會根據依賴關係自動下載相應的檔案並在編譯時使用。
在大型專案開發中,往往會將其分成若干個子專案,每個子專案都有著自己的的pom.xml,它們與父pom.xml之間相當於繼承的關係。可以說,pom.xml檔案的配置是整個Maven的核心重點,也是學習Maven過程中需要詳細瞭解的內容。這裡只給出了最簡單的配置樣例,詳細瞭解可以檢視官方文件。
接下來編譯並執行Helloworld專案。
如果是第一次編譯的話,需要聯網,因為Maven會自動下載依賴包。
mvn package 下載的依賴包會儲存在~/.m2/repository資料夾中,開啟這個資料夾,我們會發現裡面的包正是按前面所說的四元組目錄結構進行儲存的。Maven在依賴一個jar包時會先去本地庫查詢,如果沒找到就會從網上下載。當然,並不是所有的包都能從網上下載到,比如我們自己開發的jar包,這時,我們就可以用mvn install命令將一個專案安裝到本地倉庫。
打包成功後我們會發現專案中多了一個target資料夾,目錄結構如下
target/
├── classes
│ └── helloworld
│ └── App.class
├── helloworld-1.0-SNAPSHOT.jar
├── maven-archiver
│ └── pom.properties
├── maven-status
│ └── maven-compiler-plugin
│ ├── compile
│ │ └── default-compile
│ │ ├── createdFiles.lst
│ │ └── inputFiles.lst
│ └── testCompile
│ └── default-testCompile
│ ├── createdFiles.lst
│ └── inputFiles.lst
├── surefire-reports
│ ├── helloworld.AppTest.txt
│ └── TEST-helloworld.AppTest.xml
└── test-classes
└── helloworld
└── AppTest.class
可以看到,在package過程中,maven完成了編譯、測試程式碼,生成測試報告,生成jar包等一系列工作。最後,我們也可以手動執行jar包檢視結果。 $ java -cp target/helloworld-1.0-SNAPSHOT.jar helloworld.App
4、Maven常用命令
Maven的命令非常多,學習命令首先要了解Maven的生命週期。Maven首先會驗證並處理引用資源,之後進行專案編譯,如果沒有宣告跳過測試,也會編譯測試程式碼並進行測試、以成測試報告。最後,Maven會將編譯好的內容進行打包,用於釋出。
Maven命令與Maven的生命週期有著對應的關係,一個命令也經常會包含多個生命週期,比如mvn package會完成以上所有步驟。
這裡列舉幾個常用的命令
mvn compile 編譯專案,這個命令用於編譯Maven工程,執行命令後會在target資料夾中的classes中生成對應的class檔案。
mvn test 編譯執行單元測試,先自動進行編譯,在執行所有的測試用例。
mvn package 打包(jar or war)
mvn install 將專案安裝到本地倉庫,釋出生成對應的package包。
mvn clean 清空專案,刪除target資料夾,即刪除生成的package包以及class等檔案。
mvn eclipse:eclipse 生成eclipse工程