1、什么是 Maven 插件?
上一篇我們講了 Maven 的生命周期,我們知道 Maven 的核心是生命周期,生命周期指定了 Maven 命令執(zhí)行的流程順序。但是真正實現(xiàn)流程的工程是由插件來完成的。
我們也可以說 Maven 是一個執(zhí)行插件的框架,每一個任務(wù)實際上都是有插件來完成。進一步說每個任務(wù)對應(yīng)了一個插件目標(biāo)(goal),每個插件會有一個或者多個目標(biāo),例如maven-compiler-plugin的compile目標(biāo)用來編譯位于src/main/java/目錄下的主源碼,testCompile目標(biāo)用來編譯位于src/test/java/目錄下的測試源碼。
2、配置編譯插件
一般我們創(chuàng)建一個 Maven 工程,就算指定了 JDK 的版本,但是你執(zhí)行 update project 操作,一般 Maven 工程會自動恢復(fù)到默認(rèn)的 JDK 版本,有可能是1.4,有可能是1.5(和 Maven 版本有關(guān))。
那么我們?nèi)绾沃付ㄆ?JDK 版本呢?在 pom.xml 中添加如下代碼:
<build>
<plugins>
<!-- 編譯插件,指定 JDK 的版本為1.8 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
下面我們來添加一個 tomcat 插件,首先我們要知道如何創(chuàng)建 Maven Web 工程。
3、創(chuàng)建 Maven Web 工程
第一步:New maven project,注意打包方式為 war

第二步:右擊項目名,選擇 properties,選擇Project Facets

第三步:將 Dynamic Web Module 取消,點擊 Apply

第四部:將 Dynamic Web Module 重新勾選,點擊 下方生成的超鏈接

第五步:點擊超鏈接,修改目錄結(jié)構(gòu),然后點擊 OK,創(chuàng)建 Maven Web 工程完成

創(chuàng)建的 Web 工程目錄結(jié)構(gòu)如下:

4、添加 tomcat 插件
我們在上面創(chuàng)建的 web 工程,可以輸入 tomcat:run 來使用默認(rèn)的 tomcat 插件去啟動 web 工程,但是默認(rèn)的插件版本有點低,我們可以手動添加插件。
<plugins>
<!--配置tomcat 插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8080</port><!--端口號 -->
<path>/</path>
</configuration>
</plugin>
</plugins>
執(zhí)行命令是輸入:tomcat7:run

如果想用tomcat8的插件,你會發(fā)現(xiàn)pom.xml文件報錯,原因是:沒有找到tomcat8-maven-plugin的plugin,在Maven的中央倉庫中根本就沒有這個插件
解決辦法:該插件下載地址
在mvnrepository倉庫中找到了一個

使用Maven中的<pluginRepositories> ,<pluginRepositories>是用來配置插件地址的,因為maven的所有功能都是使用插件來實現(xiàn)功能的,因此需要從特定的地址下載插件包。
在POM.XML中加入以下內(nèi)容
<pluginRepositories>
<pluginRepository>
<id>alfresco-public</id>
<url>https://artifacts.alfresco.com/nexus/content/groups/public</url>
</pluginRepository>
<pluginRepository>
<id>alfresco-public-snapshots</id>
<url>https://artifacts.alfresco.com/nexus/content/groups/public-snapshots</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
</pluginRepository>
<pluginRepository>
<id>beardedgeeks-releases</id>
<url>http://beardedgeeks.googlecode.com/svn/repository/releases</url>
</pluginRepository>
</pluginRepositories>
加入tomcat8-maven-plugin的依賴
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat8-maven-plugin</artifactId>
<version>3.0-r1655215</version>
</plugin>