? ? ? ??MAVEN已經(jīng)成為事實(shí)上的企業(yè)項(xiàng)目開發(fā)中的項(xiàng)目類型。無論是IDEA還是Eclipse,都已經(jīng)默認(rèn)支持創(chuàng)建MAVEN項(xiàng)目。嚴(yán)格意義上來說,MAVEN不是一種新的JavaEE項(xiàng)目類型。它凌駕于所以的項(xiàng)目類型上面,是對(duì)之前項(xiàng)目的一種“管理”。如果我們創(chuàng)建了MAVEN項(xiàng)目,那么會(huì)很方便的干這兩件事情:
? ? ? ??1:管理所有的依賴包。其中一個(gè)例子是,以往我們要引入一個(gè)第三方的jar包,需要把該jar包從網(wǎng)上(或者其它地方)下載回來,然后引入到項(xiàng)目中。而現(xiàn)在,我們只要在pom文件中引入改jar包的標(biāo)識(shí)符,然后maven插件會(huì)自動(dòng)幫我們下載該jar包并引入到項(xiàng)目中來。
? ? ? ??2:方便我們編譯、執(zhí)行、部署項(xiàng)目。
? ? ? ??且看maven項(xiàng)目在IDEA中如何運(yùn)行。
1.創(chuàng)建parent項(xiàng)目
? ? ? ??我假設(shè)你的項(xiàng)目,不會(huì)簡單到只有一個(gè)Project(在IDEA中更多的稱之為Module),所遇,基于一般的做法,我們首先會(huì)創(chuàng)建一個(gè)父項(xiàng)目。
? ? ? ??該父項(xiàng)目會(huì)定義一些通用配置,比如會(huì)整個(gè)系統(tǒng)所使用的JDK版本,或者引入的通用的jar包的版本。
? ? ? ??選擇new project,如下,

? ? ? ??Next,在此頁面,定義groupid和標(biāo)識(shí)符和版本號(hào),

? ? ? ??Next,定義項(xiàng)目名,module名。注意,module名很重要,我們定義為:test01.parent,

? ? ? ??接下來,可以enable auto-import,

? ? ? ??Pom文件就是配置文件,是parent中我們唯一需要?jiǎng)拥奈募?,在這個(gè)文件中,我們目前要做的就是把項(xiàng)目的JDK版本定義為1.10,如下,
<?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.zuikc</groupId>
? ? <artifactId>test01</artifactId>
? ? <packaging>pom</packaging>
? ? <version>1.0.1</version>
? ? <properties>
? ? ? ? <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
? ? ? ? <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
? ? ? ? <java.version>1.10</java.version>
? ? ? ? <maven.compiler.source>1.10</maven.compiler.source>
? ? ? ? <maven.compiler.target>1.10</maven.compiler.target>
? ? </properties>
</project>
2.創(chuàng)建工具項(xiàng)目
? ? ? ??有了parent,讓我們創(chuàng)建工具項(xiàng)目吧。

? ? ? ??Next。注意,下圖紅框中的設(shè)置是自動(dòng)帶過來的,一般不需要?jiǎng)印odule的標(biāo)識(shí)取名為test01.common。一般這種項(xiàng)目,在實(shí)際的工作中,是用來放置各種工具類的。

? ? ? ??Next,

? ? ? ??Finish之后,可以看到當(dāng)前module的pom文件中,指定了parent。

? ? ? ??為了演示期間,讓我們隨便創(chuàng)建一個(gè)很簡單的工具類吧,這個(gè)工具類中,只有一個(gè)加法方法。

? ? ? ??如下,
package com.zuikc.test01.common;
public class Mather {
? ? public static final int add(int a, int b){
? ? ? ? return a+b;
? ? }
}
3.創(chuàng)建UI層項(xiàng)目
? ? ? ??接下來,讓我們創(chuàng)建UI層。當(dāng)然,實(shí)際工作中,可能你的設(shè)計(jì)是標(biāo)準(zhǔn)的三層架構(gòu),那無非也就是多創(chuàng)建幾個(gè)module。另外,UI層可能是一個(gè)web project,也有可能是像本例一樣是個(gè)console。那都無所謂,MAVEN項(xiàng)目的一個(gè)優(yōu)點(diǎn)是,你甚至可以隨意將一個(gè)console項(xiàng)目變成一個(gè)web project。
? ? ? ??讓我們繼續(xù)創(chuàng)建UI層,

? ? ? ??Next,

? ? ? ??Next,

? ? ? ??Finish。
? ? ? ??在本項(xiàng)目的pom文件中,我們要設(shè)置自己依賴了common,所以,我們要配置下圖紅框中的內(nèi)容。

? ? ? ??現(xiàn)在,為了測試期間,讓我們創(chuàng)建一個(gè)main類,

? ? ? ??代碼如下,
package com.zuikc.test01.ui;
import com.zuikc.test01.common.Mather;
public class Sample01 {
? ? public static void main(String[] args) {
? ? ? ? int re = Mather.add(1,2);
? ? ? ? System.out.println(re);
? ? }
}
4.exec-maven-plugin插件
? ? ? ??要以MAVEN的形式來運(yùn)行console項(xiàng)目,我們需要添加exec-maven-plugin插件。怎么添加呢?
? ? ? ??很簡單的,只要在UI項(xiàng)目的pom中增加如下,
? ? <build>
? ? ? ? <plugins>
? ? ? ? ? ? <plugin>
? ? ? ? ? ? ? ? <groupId>org.codehaus.mojo</groupId>
? ? ? ? ? ? ? ? <artifactId>exec-maven-plugin</artifactId>
? ? ? ? ? ? ? ? <version>1.6.0</version>
? ? ? ? ? ? ? ? <executions>
? ? ? ? ? ? ? ? ? ? <execution>
? ? ? ? ? ? ? ? ? ? ? ? <goals>
? ? ? ? ? ? ? ? ? ? ? ? ? ? <goal>exec</goal>
? ? ? ? ? ? ? ? ? ? ? ? </goals>
? ? ? ? ? ? ? ? ? ? </execution>
? ? ? ? ? ? ? ? </executions>
? ? ? ? ? ? </plugin>
? ? ? ? </plugins>
? ? </build>
? ? ? ??看圖,

? ? ? ??當(dāng)保存之后,maven就會(huì)從中央倉儲(chǔ)(mvnrepository.com)中去下載這個(gè)插件(其實(shí)主要就是一些jar包)到本地。
5.配置運(yùn)行console
? ? ? ??打開配置,

? ? ? ??點(diǎn)擊+號(hào),增加一個(gè)maven配置,

? ? ? ??像如下進(jìn)行配置,

? ? ? ??保存后進(jìn)行run,

? ? ? ??第一次執(zhí)行,會(huì)出現(xiàn)download,

? ? ? ??這些down下來的文件是在哪呢?是在一個(gè)叫做maven本地倉儲(chǔ)的地方,它默認(rèn)就是idea安裝目錄的plugs下,如下所示:

? ? ? ??Ok,回過頭來說,如果執(zhí)行成功就會(huì)出現(xiàn)下面的輸出。

6.Maven clean和install
? ? ? ??如果我們r(jià)un的時(shí)候找不到common。就說明我們的common項(xiàng)目還沒安裝到maven的本地倉儲(chǔ)中。那該怎么辦呢?當(dāng)然是install了。
? ? ? ??有兩種方式,可以打開maven的操作工作臺(tái),如下,

? ? ? ??如圖,

? ? ? ??每個(gè)項(xiàng)目都有自己的lifecycle,可以在這個(gè)工作臺(tái)中進(jìn)行clean、編譯或者install等。依次,我們install parent、common、ui。成功之后,我們就可以在本地倉儲(chǔ)中看到自己編寫的項(xiàng)目咯。
? ? ? ??感謝關(guān)注“碼農(nóng)星球”。本文版權(quán)屬于“碼農(nóng)星球”。我們提供咨詢和培訓(xùn)服務(wù),關(guān)于本文有任何困惑,請(qǐng)關(guān)注并聯(lián)系我們。