主要內容

  • 編寫POM
  • 編寫主程式碼
  • 編寫測試程式碼
  • 打包和執行

  到目前為止,已經大概瞭解並安裝好了Maven,現在開始建立一個最簡單的HelloWorld專案。


編寫POM

  就像Make的Makefile、Ant的build.xml一樣,Maven專案的核心是pom.xml。POM(Project Object Model,專案物件模型)定義了專案的基本資訊,用於描述專案如何構建,宣告專案依賴等等。

  現在先為HelloWorld專案編寫一個最簡單的pom.xml。

  首先建立一個名為helloworld的資料夾,開啟該資料夾,新建一個名為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>com.chd.work</groupId>
<artifactId>helloworld</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>Maven Hello World Project</name> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.9</source>
<target>1.9</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.chd.work.helloworld.HelloWorld</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

簡要介紹一下pom.xml中的內容:

  project是所有pom.xml的根元素,它還聲明瞭一些POM相關的名稱空間及xsd元素,雖然這些屬性不是必須的,但使用這些屬效能夠讓第三方工具(如IDE中的xml編輯器)幫助我們快速編輯POM。

  根元素下面的第一個子元素modelVersion指定了當前POM模型的版本,對於Maven3來說,它只能是4.0.0。

  這段程式碼中最重要的是包含groupId、artifactId和version的三行。這三個元素定義了一個專案基本的座標,在Maven的世界,任何的jar、pom或者war都是以基於這些基本的座標進行區分的。

  groupId定義了專案屬於哪個組,這個組往往和專案所在的組織或公司存在關聯。如果你的公司是mycom,有一個專案為myapp,那麼groupId就應該是com.mycom.myapp。

  artifactId定義了當前Maven專案在組中唯一的ID,我們為這個Hello World專案定義artifactId為helloworld。

  version指定了Hello World專案當前的版本——1.0SNAPSHOT。SNAPSHOT意為快照,說明該專案還處於開發中,是不穩定的版本。

  name元素聲明瞭一個對使用者更為友好的專案名稱,雖然這不是必須的,但還是推薦為每個POM宣告name,以方便資訊交流。

編寫主程式碼

  預設情況下,Maven假設專案主程式碼位於src/main/java目錄,我們在該目錄下建立檔案com/chd/work/helloworld/HelloWorld.java,其內容如下所示:

 package com.chd.work.helloworld;

 public class HelloWorld {
public String sayHello() {
return "Hello Maven!";
} public static void main(String[] args) {
System.out.println(new HelloWorld().sayHello());
}
}

  程式碼編寫完畢後,使用Maven進行編譯,在專案根目錄下執行命令mvn clean compile,得到輸出。clean告訴Maven清理輸出目錄target/,compile告訴Maven編譯專案主程式碼,將專案主程式碼編譯至target/classes目錄(編譯好的類為com/chd/work/helloworld/HelloWorld.class。

  至此,Maven在沒有任何額外的配置的情況下就執行了專案的清理和編譯任務。

打包和執行

  簡單地執行命令mvn clean package進行打包,Maven在打包之前會執行編譯、測試等操作,得到helloworld-1.0-SNAPSHOT.jar檔案。

  如果想要其他的Maven專案直接引用這個jar檔案,還需要一個安裝的步驟。執行mvn clean install,在打包之後,又執行安裝任務,將該專案輸出的jar安裝到了本地Maven倉庫中。可以開啟相應的資料夾看到Hello World專案的pom和jar。