Maven是一個採用純Java編寫的開 源項目管理工具。Maven採用了一種被稱之爲project object model (POM)概念來管理項目,所有的項目配置信息都被定義在一個叫做POM.xml的文件中,通過該文件,Maven可以管理項目的整個聲明週期,包括編 譯,構建,測試,發佈,報告等等。目前Apache下絕大多數項目都已經採用Maven進行管理。而Maven本身還支持多種插件,可以方便更靈活的控制 項目。
一、安裝Maven
1、http://maven.apache.org/download.cgi下載地址:
補充一句:.tar.gz和.zip這兩種文件的區別:其實這兩個壓縮文件裏面包含的內容是一樣的,只是壓縮格式不一樣,tar.gz格式的文件比zip文件要小不少。tar.gz壓縮格式用於unix的操作系統,而zip用於windows的操作系統,但在windows系統中用WinRar工具同樣可以解壓縮tar.gz格式的,所以下載時不用擔心或是疑惑什麼!
2,、解壓文件
3、配置環境變量
M2_HOME : D:\WorkApp\apache-maven-3.3.9
PATH : %M2_HOME%\bin;
4:驗證安裝是否成功
在命令行上輸入 : mvn -version; 回車,如看到下面信息表示安裝成功:
二、創建第一個Maven項目
1,新建如下目錄結構
其中:src/main/java 目錄包含了項目的源代碼,src/test/java 目錄包含了項目的測試代碼,pom.xml是項目的項目對象模型(Project Object Model or POM)。
2:POM
pom.xml 文件是maven對一個項目的核心配置,這個文件將包含你希望如何構建項目的大多數配置信息。POM大而複雜,但你不用全部去了解,只要使用一些常用的配置就可以了。下面列出這個POM的內容:
<?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.ionesmile.mavenhello</groupId>
<artifactId>mavenhello</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.7</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.2.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.ionesmile.mavenhello.SayHello</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
所有的Maven項目都必須配置這四個配置項:
<modelVersion>4.0.0</modelVersion> <!-- 當前POM模型的版本,相對於Maven2和Maven3,這裏只能是4.0.0 -->
<groupId>com.ionesmile.mavenhello</groupId> <!--groupId指的是項目名的項目組,默認就是包名-->
<artifactId>mavenhello</artifactId> <!--artifactId指的是項目中的某一個模塊,默認命名方式是"項目名-模塊名"-->
<version>SNAPSHOT-0.0.1</version> <!--version指的是版本,這裏使用的是Maven的快照版本-->
// 可選項
<packaging>jar</packaging> <!--packaging項目的類型,默認是jar,描述了項目打包後的輸出。類型爲jar的項目產生一個JAR文件,類型爲war的項目產生一個web應用。-->
3、編寫主代碼
在src ---> mavenHello目錄下:
package com.ionesmile.mavenhello;
public class SayHello {
public String sayHello() {
return "Hello, Maven";
}
public static void main(String[] args) {
SayHello h = new SayHello();
System.out.println(h.sayHello());
}
}
編寫完成後,在DOS下使用 mvn clean compile命令進行編譯,然後會出現一堆輸出。等待一下,直到出現 BUILD SUCCESSFUL
4,測試代碼
在test ---> mavenHello目錄下:package com.ionesmile.mavenhello;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class SayHelloTest {
@Test
public void testSayHello(){
SayHello sayHello = new SayHello();
String result = sayHello.sayHello();
assertEquals("Hello, Maven", result);
}
}
編寫完成後,運行 mvn clean test 命令。
注:執行Test需要依賴junit框架,上面pom.xml中已經加入,見<dependencies>標籤。
另外在這裏如果人品不好,可能會出現兩個問題,我在配置的時候出現了第二個問題,第一個問題也提出來,避免遇到坑。
問題一:
第二個問題:
出現如下異常:BUILE FAILURE
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException
解決辦法,詳見:http://stackoverflow.com/questions/29147329/unable-to-create-a-new-maven-hello-world-project
5、打包和運行
執行 mvn clean package 命令,會生成\target\mavenhello-1.0-SNAPSHOT.jar文件.
執行 mvn clean install 命令,會將該jar文件導入到本地倉庫。文件路徑爲:倉庫路徑 + groupId + artifactId,如:D:\WorkApp\AppWorkSpace\MavenSpace\com\ionesmile\mavenhello\mavenhello\1.0-SNAPSHOT\mavenhello-1.0-SNAPSHOT.jar
這裏我的倉庫位置爲D:\WorkApp\AppWorkSpace\MavenSpace,是因爲我改動了apache-maven-3.3.9\conf\settings.xml,改動如下:
如果不改動,就是上面默認的路徑:${user.home}/.m2/repository,如:C:\Users\Administrator\.m2\repository
6,在控制檯輸出“Hello, Maven”
從安裝maven到運行Hello Maven的完整步驟到這裏就結束了,非常感謝下列資料提供的指導。
參考圖書:《Maven實戰》
參考網址:http://wentao365.iteye.com/blog/903396/