Maven核心

Terence_Jing發表於2016-12-08

常用構建命令

常用命令

         mvn –v

         compile

         test

          package

          clean 刪除Maven生成的專案目標檔案target

          install :安裝jar包到本地倉庫中


建立目錄的兩種方式:

1.      archetype:generate按照提示進行選擇

2.      archetype:generate–DgroupId=組織名.公司網址的反寫.專案名

                                     -DartifactId=專案名-模組名

                                     -Dversion=版本號

                                     -Dpackage=程式碼所在的包名

install詳解

         當Maven包下管理多個專案的時候,一個專案maven02中使用到了另外一個專案maven01當中的類,需要import引入該包的地址

                                                                          import com.terence.maven01.model.HelloWorld;

         但是測試的時候仍然編譯不通過,這是因為,兩個專案之間沒有什麼關係,此時需要將包含maven01中的那個類的jar包引入過來才可以編譯成功,此時需要進入maven01目錄下,使用install命令,將包含這個類的專案jar包釋出到本地倉庫中,方便其他專案使用。

        此時,專案mavne02仍舊不能編譯成功,還需要在配置檔案中引入依賴的jar包,即maven01專案的座標。

對Maven02專案的配置檔案pom.xml新增依賴如下:

#####pom.xml檔案

<?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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
 
  <groupId>com.terence.maven02</groupId>
  <artifactId>maven02-model</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 
 <dependencies>
    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.10</version>
    </dependency>
    <dependency>
        <groupId>com.terence.maven01</groupId>
        <artifactId>maven01-model</artifactId>
         <version>0.0.1-SNAPSHOT</version>
    </dependency>
  </dependencies>
</project>


         此時如果需要用到配置檔案的jar包,maven會自動根據配置檔案將對應的jar包新增到ClassPath當中,專案便可以通過路徑變數到本地倉庫中尋找對應的jar包,如果這個jar包不存在,會從網路上下載對應的jar包到中央倉庫中。

         到這個地方,Maven專案管理的優勢已經體現了出來,專案編譯執行會根據專案配置檔案pom.xml的描述內容通過變數路徑到本地倉庫尋找對應的依賴jar包,如果這個包不存在,會自動到網路上下載相應的包,不會像手動新增jar包一樣新增了一些不必要的jar包而且還要手動新增到ClassPath路徑當中。

 

archetype詳解(自動建立目錄)

Archetype外掛的引入,用於建立複合Maven規定的目錄骨架,提高開發效率。

》在MavenCode目錄下建立一個資料夾maven03

》Dos介面進入maven03目錄

》建立專案目錄結構,輸入命令:mvn archetype:generate,此時,如果是第一次自動建立目錄,則需要從網路上下載一些依賴檔案,時間會久一點,等待一下就好。


直到出現以上介面,遇到上述第三行906提示直接回車,第一個紅線處提示讓選擇快速建立的archetype外掛版本,輸入:6,即上圖第一個紅線的位置,然後輸入專案的座標groupId、artifactId、version等資訊,最後輸入package包名,回車即可,出現下圖的配置確認、配置成功等資訊。


另一種快速建立Maven目錄的方式就是一次性闖將命令

mvn archetype:generate-DgroupId=com.imooc.maven04     -DartifactId=maven04-demo    -Dversion=1.0.0-SNAPSHOT -Dpackage=com.imooc.maven04-demo

然後一步到位的自動執行,過程中直接回車、輸入版本號6、輸入y,最後闖將成功。

 

核心概念

座標

外掛、依賴都是構件,要找到一個構件,就需要一個準確的座標,而Maven專案的座標則是:(groupId、artifactId、version)

           groupId=com.imooc.maven04      組織名.公司網址的反寫.專案名

           artifactId=maven04-demo    專案名-模組名

           version=1.0.0-SNAPSHOT  版本號

所有這些構件都存在於倉庫當中。


倉庫

      倉庫分為兩種:本地倉庫和遠端倉庫,如果本地倉庫找不到這個構件就會到遠端倉庫中尋找,將找到的構建下載到本地倉庫,如果遠端倉庫也找不到,就會報錯。

     Maven提供的一個預設的倉庫地址:

    在本機Maven解壓包:C:\Program Files\Apache SoftwareFoundation\apache-maven-3.1.1\lib

    尋找到maven-model-builder-3.3.1.jar

    對其解壓,找到maven-model-builder-3.1.1.jar\org\apache\maven\model下的pom.4.0.0.xml,它提供了比價全的依賴。

###pom.4.0.0.xml檔案

<project>
  <modelVersion>4.0.0</modelVersion>
 
  <repositories>
    <repository>
      <id>central</id>
      <name>Central Repository</name>
      <url>http://repo.maven.apache.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>
……

上述<url>元素內容http://repo.maven.apache.org/maven2是中央倉庫的地址(可以輸入瀏覽器檢視中央倉庫內容資源),遠端中央倉庫包含了java開發將近全部的依賴檔案、框架資源等資訊;<enabled>元素是false,表示禁止下載快照版本;

 

映象倉庫

映象倉庫是國內的倉庫,使用該倉庫更快更穩定,訪問陳功率更高。

在maven解壓包C:\Program Files\Apache SoftwareFoundation\apache-maven-3.1.1\conf 找到setting.xml檔案,在該檔案的映象描述中,有這樣一段:

<mirrors>

    <!-- mirror

     | Specifies a repository mirrorsite to use instead of a given repository. The repository that

     | this mirror serves has an IDthat matches the mirrorOf element of this mirror. IDs are used

     | for inheritance and directlookup purposes, and must be unique across the set of mirrors.

     | -->

    <mirror>

      <id>maven.net.cn</id>        <!—國內映象倉庫標識-->

      <mirrorOf>central</mirrorOf> <!—中央倉庫對映-->

      <name>central mirror in china</name><!—國內倉庫名-->

      <url>http://maven.net.cn/content/groups/pulibc</url>

                                  <!—國內映象倉庫url地址-->

    </mirror>

  </mirrors>

上述<mirror>元素中的內容是特意設定的,亦可不設定,如果不設定,則使用預設設定。


更改倉庫位置

       通常本地倉庫存放位置都是在使用者目錄下的.m資料夾下的repository檔案中,此時在setting.xml檔案中的設定不需要更改,則預設在此倉庫。

如果需要更改倉庫地址,在需要在setting.xml檔案中更改<localRepository>元素的倉庫路徑。

例如:如果需要將其存在工作空間中的repo資料夾下,此時在<localRepository>標籤中設定如下:

                                                <localRepository>C:\Users\Terence\workspace\repo<localRepository>

然後將setting.xml放在該目錄下。

 

Eclipse與maven

Eclipse中安裝maven外掛

            如果Eclipse版本是4.0以上,或者安裝了MyEclipse,都不需要整合Maven外掛;否則,都需要向Eclipse中整合maven外掛,以便使用Eclipse自動建立Maven專案。


外掛安裝

將M2E外掛,放在Eclipse中的F:\JAVA\Hibernate\eclipse\dropins目錄下;或者---

在Eclipse-->Help->Install New Software-->Add:

             Name:Maven

             Location: http://m2eclipse.sonatype.org/sites/m2e

然後點選OK,執行載入外掛。


修改配置檔案

1.在F:\JAVA\Hibernate\eclipse目錄下修改Eclipse.ini檔案,新增以下的粗體部分

……
  Org.eclipse.platform
  --launcher.XXMacpermSize
  512m
  -vm
  C:\ProgramFiles\Java\jdk1.7.0_80\bin\javaw.exe
  --launcher.defaultAction
  openFile
……


2.修改Eclipse JREs

Eclipse是執行在JRE之上的,而Maven是用到JDK的,所以要修改一下Eclipse的JREs,方便Maven找到JDK。

Windows-->performances-->Java-->InstalledJREs-->選擇JDK的目錄新增JDK1.7.0_80 ,新增即可。

更改Maven 預設配置

在繼承Maven的eclipse中,windows--->prefrences---->Maven--->Installation--->檢視外掛安裝情況,如果沒有,則將新下載的maven檔案add進去;

最後在user Setings中確保配置檔案的路徑是之前配置了mirror的配置檔案setting.xml路徑:C:\Users\Terence\.m2\repository

然後點選apply->OK,就可以了。

接下來開始利用Maven外掛建立專案了。


Eclipser中自動建立Maven專案

專案建立

》Eclipse-->New-->Project-->Maven Project-->


   按照上述步驟選擇建立web專案

 新增座標:

 

 

專案編譯、測試、打包

   此時開啟專案testWeb,看到pom.xml專案管理描述檔案,右擊pom.xml--》Run As---》Maven Build……,在Goal方框中填入編譯命令:compile

   控制檯如果編譯成功,則繼續測試,如果報錯,則需要設定一個引數:

   步驟:重新進入Windows--performances---Java---Installed JREs,點選新增的jdk1.7.0_80---Edit,在Default VM Arguments後面新增引數:-Dmavn.multiModuleProjectDirectory=$M2_HOME,即新增Maven目錄。

   隨後再按照上述步驟重新編譯:compile

   按照上述步驟測試,在Goal方框中填入編譯命令:test

   按照上述步驟打包,在Goal方框中填入編譯命令:package

 

Maven生命週期和外掛

     Maven強大的一個重要的原因是它有一個十分完善的生命週期模型(lifecycle),這個生命週期可以從兩方面來理解。

    第一,顧名思義,執行Maven的每個步驟都由它來定義的,這種預定義的預設行為使得我們使用Maven變得簡單,相比而言,Ant的每個步驟都要你手工去定義。

    第二,這個模型是一種標準,在不同的專案中,使用Maven的介面是一樣的,這樣就不用去仔細理解每個專案的構建了,一般情況下,mvn clean install 這樣的命令是通用的。我想,一定是吸收了許多專案的經驗,Maven才能定義出如此完善的模型  。   

    前面已經學過幾個常用命令:clean/compile/test/package/install,同時這也是一個專案的完整構建過程。


生命週期

  嚴格來說一個專案的生命週期:清理、編譯、測試、打包、整合測試、驗證、部署;(clean/compile/test/package/install)

Maven專案可以劃分為三個生命週期,對應三個階段(clean/package/install),後面一個階段依賴於前面一個階段。

            階段一:clean  清理專案

            階段二:default 構建專案

            階段三:site 生成專案站點

根據上述三個階段,可以知道少了compile和test這兩個過程,但是實際當中,在package的同時,已經執行了compile和test。

        特別強調Maven的三個生命週期是相互獨立的,你可以僅僅呼叫clean來清理工作目錄,僅僅呼叫site來生成站點。當然你也可以直接執行 mvn clean install site 執行所有這三套生命週期。


階段細化

Clean: 清理專案

           (pre-clean 執行清理前的工作)

           (clean 清理上一次構建生成的檔案)

           (post-clean 執行清理後的檔案)

default 構建專案(核心)

           (compile/test/package/install)

 

site 生成專案站點

           (pre-site 在生成專案站點前要完成的工作)

           (site 生成專案的站點文件)

           (post-site 在生成專案站點後要完成的工作)

           (site-deploy 釋出生成的站點到伺服器上)

 

引入外掛

 

配置檔案

Eclipse只支援JDK,其他的所有功能都是通過第三方外掛來實現的。

舉個栗子

使用sources外掛來打包原始碼。

在maven專案中的專案管理檔案pom.xml檔案修改配置:

……
<build>
    <finalName>testWeb</finalName>
    <plugins>
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-source-plugin</artifactId>
         <version>2.4</version>
         <executions>
            <execution>
               <phase>package</phase>
               <goals>
                  <goal>jar-no-fork</goal>
               </goals>
            </execution>
         </executions>
      </plugin>
    </plugins>
  </build>
……


解釋:首先配置source外掛的座標(groupId、artifactId、version);然後將該外掛的原始碼打包功能繫結在<phase>package</phase>專案的package下一同執行。

執行

Pom.xml---》run As--->Maven build……--->Goal:clean package

此時執行的兩個命clean和Package,根據控制檯可以知道:

Clean:在執行前清理以前的執行檔案

Package:執行這一步之前就已經執行了compil/test,最後執行了package打包為jar包。

由此可知,後面每一個階段的執行都依賴於前一個階段,前面的階段都會自動執行。

 

pom.xml元素介紹

          專案管理檔案,用於專案描述、組織管理、依賴管理和構建資訊的管理。

          下面介紹一些專案中pom.xml檔案常用到的元素。


pom.xml基本元素

連結http://blog.csdn.net/csdn_terence/article/details/53811318

參考連結:http://blog.csdn.net/jiangyu1013/article/details/52424726

<!--projectpom的根元素;約束資訊 -->

<projectxmlns="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.0http://maven.apache.org/maven-v4_0_0.xsd">

 

   <!-- modelVersion制定了當前pom的版本,是必不可少的 -->

  <modelVersion>4.0.0</modelVersion>

     

      <!-- 專案座標(groupIdartifactIdversion):定義當前pom檔案是屬於哪個maven專案

         maven專案是一種模組化的概念,裡面將專案劃分為模組。

         groupId=反寫公司網址.專案名

         artifactId=專案名-模組名

         version=0.0.1SNAPSHOP

         (第一個0表示大本版號,第二個0表示分支版本號,第三個0表示小版本號)

         (版本除了snapshop快照版本之外,還有alpha--α內測版本、beta--β公測版本、Release穩定版本、GA釋出版本)

       -->

      <groupId>com.my.mavenweb</groupId>

      <artifactId>testWeb</artifactId>

      <version>0.0.1-SNAPSHOT</version>

     

      <!-- packaging:指定了專案的打包方式,如果內容為空,預設指定打包為Jar包,此外,還要warzippom等型別-->

      <packaging></packaging>

     

      <!-- name:指定了專案的描述名,一般在產生物件文件的時候才會使用 -->

      <name>testWebMaven Webapp</name>

      <!--URl:指定了專案的Url -->

      <url>http://maven.apache.org</url>

      <!-- description:專案描述資訊

      developers:開發人員資訊

      licenses:開源框架的許可證資訊

      organization:組織資訊     

      -->

      <descriprion></descriprion>

      <developers></developers>

      <licenses></licenses>

      <organization></organization>

     

   <properties> 

        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 

        <springversion>3.1.1.RELEASE</springversion> 

        <junitversion>3.8.1</junitversion> 

    </properties> 

 <!--

 dependencies:依賴資訊列表

 dependency:依賴項

 groupIdartifactIdversion:依賴項的位置座標,方便查詢依賴。

 type:依賴項的型別,jar/war/zip/pom等型別

 scope:依賴範圍,是指當前依賴項在哪個範圍內有效。

 potional:依賴是否可選,預設為false,則專案可以繼承該依賴;如果為true,則子專案必須顯式引入該依賴

 exclusions:排除依賴的傳遞列表

 exclusion:排除依賴,例如排除傳遞依賴中自己不需要的依賴項

  -->

    <dependencies>     

        <dependency> 

            <groupId>junit</groupId> 

            <artifactId>junit</artifactId> 

            <version>${junitversion}</version>

            <type></type>

            <scope>test</scope> 

        </dependency> 

        <dependency> 

            <groupId>org.springframework</groupId> 

            <artifactId>spring-aop</artifactId> 

            <version>${springversion}</version> 

            <type>jar</type> 

            <scope>compile</scope> 

        </dependency> 

        <dependency> 

            <groupId>commons-logging</groupId> 

            <artifactId>commons-logging</artifactId> 

            <version>1.1</version> 

        </dependency> 

    </dependencies>

<!--

 dependencyManagement:依賴管理,主要是針對父模組列出依賴項進行管理,使得下面需要某個父模組的模組直接繼承該依賴,

   不用進行傳遞依賴這麼麻煩,但是該標籤不會引入到執行當中,只起到一個說明作用。

-->

    <dependencyManagement>

      <dependencies>

         <dependency></dependency>

      </dependencies>   

    </dependencyManagement>

  <!--

  build:系統專案構建行為知識

  plugins:引入的外掛的列表

  plugin:外掛,這個標籤下需要宣告外掛的座標,

  -->

  <build>

    <finalName>testWeb</finalName>

    <plugins>

      <plugin>

         <groupId>org.apache.maven.plugins</groupId>

         <artifactId>maven-source-plugin</artifactId>

         <version>2.4</version>

         <executions>

            <execution>

               <phase>package</phase>

               <goals>

                  <goal>jar-no-fork</goal>

               </goals>

            </execution>

         </executions>

      </plugin>

    </plugins>

  </build>

  <!--

    parent:通常用於子模組對父模組POM的整合

   modules:用於聚合執行多個專案,指定多個模組一起編譯。

   -->

  <parent></parent>

  <modules></modules>

</project>


Maven依賴範圍

 

先看下面一段程式碼:

……

<dependencies> 

        ……   

        <dependency> 

            <groupId>junit</groupId> 

            <artifactId>junit</artifactId> 

            <version>${junitversion}</version>

            <type></type>

            <scope>test</scope> 

        </dependency>

      ……

……

上述標籤元素<scope> </scope>表示依賴範圍

平時開發如果需要某一個框架,就需要將該框架的jar包新增到ClassPath,Maven為我們提供了三種classpath:編譯、測試、執行;

而上述的<scope>test</scope>表示juint只存在於測試的classpath

<scope>屬性

  • Compile:在編譯時有效。
  • Provided:在編譯和測試時有效
  • Runtime:測試和執行時有效
  • Test:只在測試的時候有效
  • System:在編譯和測試時有效,與本機系統相關聯,可移植性差。
  • Import:匯入的範圍,它只使用在dependencyManagement中,表示從其他的pom中匯入dependency的配置,表示是從吉他地方繼承過來的依賴。

例如:

……

<denpendencyManagement>

       <dependencies>

              ……

        <dependency> 

            <groupId>maven</groupId> 

            <artifactId>A</artifactId> 

            <version>1.0</version>

            <type>pom</type>

            <scope>import</scope> 

        </dependency>

      ……

       </dependencies>

</denpendencyManagement>

……


依賴傳遞

傳遞性依賴的概念,就像A依賴於B,B依賴於C,那麼就可以說A傳遞依賴於C;

建立三個專案分別是A、B、C

B依賴於C

首先,對C執行package和install,先打包,再發布到本地倉庫;

然後,開啟B的pom檔案,在依賴列表當中新增依賴

……       

<dependency> 

      <groupId>maven</groupId> 

      <artifactId>C</artifactId> 

      <version>1.0</version>

 </dependency>

……

此時編譯專案B,執行compile,可以執行編譯成功。

A依賴於B

首先,對B執行package和install,先打包,再發布到本地倉庫;

然後,開啟A的pom檔案,在依賴列表當中新增依賴

<dependencies>

……       

<dependency> 

      <groupId>maven</groupId> 

      <artifactId>B</artifactId> 

      <version>1.0</version>

 </dependency>

……

<dependencies>

 

此時再compile,成功之後找到A的Maven Dependencies包,會看到junit、B、C都在這裡面,其中C是被傳遞引用進來的。


排除依賴

如果A只想依賴於B,那麼可以使用排除依賴將C依賴項排除出去

在依賴列表中可以新增

<dependencies>

……       

<exclusions>

    <exclusion>

          <groupId>maven</groupId> 

          <artifactId>C</artifactId> 

         <version>1.0</version>

      </exclusion>

 </exclusions >

……

<dependencies>

儲存之後,發現專案A的Maven Dependencies包裡面的依賴項C消失了。

如果發現專案的JRESystem Library包是JavaSE1.5版本的,可以通過setting.xml檔案將其修改,在檔案中加入如下程式碼,建立專案的時候,自動會建立1.7的版本。

<profiles>

……

<profile>

      <id>jdk-1.7</id>

      <activation>

      <activeByDefault>true</activeByDefault>

        <jdk>1.7</jdk>

      </activation>

      <repositories>

         <maven.compiler.source>1.7</maven.compiler.source>

         <maven.compiler.target>1.7</maven.compiler.target>

            <maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>

      </repositories>

</profile>

……

</profiles>


依賴衝突

衝突依賴,比如C依賴於A和B不同版本的同一構件,但是它到底依賴於哪個呢!

此時處理方式遵從一下幾個規則:

1.短路優先

如果A—>B->C->X(jar)、A->D->X(jar)

那麼編譯的時候會選在短路優先選擇後者進行編譯。

2.先宣告先優先

A->C->jar,A->D->jar<br>

編譯時會選擇前者;

如果路徑長度相同,則誰先宣告,先解析誰。

 

聚合與繼承

聚合

對於多個專案一起編譯,這種方式叫做聚合。

還以上面的ABC三個專案作為例子說明;

三者設定了傳遞依賴關係,並且經過配置,但是此時不想一個一個的由高到低的編譯/打包/安裝,此時可以在A的pom.xml檔案的根目錄中加入如下元素標籤,只需要對A進行打包安裝即可實現對B和C的打包和安裝,這種一同編譯安裝的方式,就叫做聚合。

……

    <modules>

      <module>../C</module>

      <module>../B</module>

      <module>../A</module>

</modules>

……

繼承

多次使用到的依賴,比如:單元測試,沒有必要在所有的專案中都引用一下,此時就可以採用繼承的方式來實現,先來一個父類的POM.XML,然後再中繼承此POM.XML。

比如,多個專案都使用到了junit這個依賴項,則可以重現建立一個專案,將此依賴項新增進pom.xml,然後其他專案的pom檔案可以繼承此pom.xml檔案

在A專案的pom檔案中使用<parent></parent>中間引入父pom.xml本身的座標

……詳細過程參照其他教程……

需要注意的幾個方面:

1.packaging改為pom

2 dependencyManagement中並不提取依賴

3.property中定義了unit版本號,之後可以引用

4 父類parent中的main和test沒有意義,可以刪除


使用Maven構建專案

》Eclipse-->New-->Project-->Maven Project-->


按照上述步驟選擇建立web專案

新增座標:


 

 

然後是對pom.xml檔案進行屬性和依賴配置:

一堆東西的配置:

@Pom.xml檔案

…………
<properties> 
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
        <springversion>3.1.1.RELEASE</springversion> 
        <junitversion>3.8.1</junitversion> 
</properties>
<dependencies> 
        <dependency> 
            <groupId>junit</groupId> 
            <artifactId>junit</artifactId> 
            <version>${junitversion}</version> 
            <scope>test</scope> 
        </dependency> 
        <dependency> 
            <groupId>org.springframework</groupId> 
            <artifactId>spring-aop</artifactId> 
            <version>${springversion}</version> 
            <type>jar</type> 
            <scope>compile</scope> 
        </dependency> 
……


 

編輯jsp頁面,如果jsp頁面打不開,或者報錯,那是因為Eclipse缺少了ServletAPI外掛,需要在pom.xml檔案裡面的依賴列表當中新增依賴項,儲存後,可以自動下載依賴的jar包,

……
<dependency> 
            <groupId>javax.servlet</groupId> 
            <artifactId>javax.servlet-api</artifactId> 
            <version>3.0.1</version> 
            <scope>provided</scope> 
</dependency> 
……


然後在pom.xml檔案中更改junit版本號為4.10.

 

更新專案,右擊專案名稱àMavenàUpdate ProjectàOK

確保輸出目錄在是target目錄,右擊專案名稱-->Build Path-->Configure Build Path-->Source 確保輸出都在TargetClasses即可。

右擊專案名稱—>Properties-->Project Facets-->勾選DynamicWeb Module動態web模組。

 

修改部署預設配置

釋出產品時候不需要測試的檔案,所以可以刪除test檔案,做法:

右擊專案名稱—>PropertiesàDeployment Assemby,,刪除/src/test/java、/src/test/resources

 

對專案編譯、執行

第一,選擇第三方外掛jetty來作為web容器,這就需要,需要在pom.xml配置檔案中的<build>標籤下引入外掛的座標:

<build>
    <finalName>testMavenWeb</finalName>
    <plugins>
    	<plugin>
    	 
    		<groupId>org.eclipse.jetty</groupId>
    		<artifactId>jetty-maven-plugin</artifactId>
    		<version>9.4.0.RC1</version>
    	<!--
    		<groupId>org.apache.tomcat.maven</groupId>
    		<artifactId>tomcat7-maven-plugin</artifactId>
    		<version>2.2</version>  -->
    		 <executions>
    			<!--  在打包成功後使用jetty:run來執行jetty服務-->
    			<execution>
              		 <phase>package</phase>
              		 <goals>
                		  <goal>run</goal>
              		 </goals>
            	</execution>
            </executions>
    	</plugin>
    </plugins>
  </build>




       啟動專案執行,右鍵專案名字-->run as -->maven build…-->Goals後面輸入“jetty:run”命令,便可以可執行。
       此時在控制檯可以看到StartedJetty server,可以在瀏覽器中檢視頁面顯示結果“Hello World”。
      (除了使用jetty,還可以使用tomcat,在官網上找到Maven tomcat的外掛座標,如上述所示的座標。 )
第二,選擇Tomcat作為web容器,此時需要新增Tomcat外掛的座標,新增方法和上述新增Jetty外掛座標的方法一樣。


注意:

使用jetty外掛作為容器的時候訪問預設網頁的時候不用輸入專案名字:http://localhost:8080,可以直接出現預設頁面

如果訪問其他網頁,則按照正常訪問方法即可,需要加入專案名稱:http://localhost:8080/seckill/list.action。

使用Tomcat作為容器的時候url當中需要加入專案名稱:http://localhost:8080/testMaveWebDemo,則可以出現預設頁面。

                        如果訪問其他網頁,同樣需要加入專案名稱:http://localhost:8080/seckill/list.action。


 
                            Attention
小技能
如果不知道第三方外掛的座標,該怎麼辦!
      進入該外掛的官網,找到該外掛其中一個合適的版本,點選進去,下面說明裡面有該外掛的依賴座標,只需要複製貼上過來即可,專案執行時候會自動下載該外掛到本地倉庫中,然後新增到ClassPath中。


友情連結http://blog.csdn.net/xiaoshunzi111/article/details/52718303
     (此連結講述了Maven的安裝,具有參考價值)

相關文章