Maven介紹

maven 簡單實用教程html

1. Maven介紹

 

1.1. 簡介

 

java編寫的用於構建系統的自動化工具。 java

目前版本是2.0.9,注意maven2maven1有很大區別,閱讀第三方文檔時須要區分版本。 react

 

1.2. Maven資源

 

·         官方網站 web

·         The 5 minute test,官方簡易入門文檔; apache

·         Getting Started Tutorial,官方入門文檔; windows

·         Build Cookbook,官方的cookbook 緩存

·         POM ReferencePOM文件的設置參考 tomcat

·         Settings Reference settings文件的設置參考 服務器

·         Better Builds with Maven,免費的電子書,下載須要註冊。 oracle

 

1.3. MavenAnt的區別

 

Maven正在逐漸取代Ant,不少java開源軟件(SpringStruts2 ……)已經使用maven

·         不須要寫複雜的處理腳本;

·         聲明式的類庫依賴管理。

 

1.4. Maven的基本功能

 

·         構建:好比生成classjarwar或者ear文件

·         生成文檔:好比生成javadoc、網站文檔

·         生成報告:好比junit測試報告

·         生成依賴類庫:生成文檔,說明項目多其餘軟件的依賴

·         有關SCMSCMSoftware Configuration Management),軟件配置管理,好比版本控制,好比bug管理等等

·         發佈:生成供發佈的分發包,好比生成Struts2的分發包,供提交給用戶使用

·         部署:好比,web應用程序,自動部署到指定的服務器上

經過我寫的商品管理的小例子,演示結合mavensvn的功能。

 

2. Maven使用

 

 

2.1. Maven的安裝和配置

 

·         從官方網站下載最新的Maven分發包http://maven.apache.org/download.html,當前爲2.0.9

·         解壓縮到本地;

·         配置maven, maven/bin目錄設置到windows環境變量Path

·         檢查maven是否安裝成功, 在命令行中執行

·         mvn -version

 

2.2. Maven的基本使用

 

Maven的基本使用介紹經過命令行編寫簡單的javaweb項目。

 

2.2.1. 實現Java項目

 

經過maven在命令行下建立普通java項目,也就是main方法執行的項目或者jar文件的類庫。

 

2.2.1.1. 建立Maven項目

 

執行:

 

mvn archetype:generate

 

在交互界面中:

·         Choose a number: 回車便可,也就是選擇15

·         Define value for groupId: 輸入組織id,好比easymorse.com

·         Define value for artifactId:輸入項目名稱,好比helloworld

·         Define value for version: 輸入版本號,能夠直接回車,默認是1.0-SNAPSHOT

·         Define value for package: java的包名,好比com.easymorse

·         而後回車表示確認上述輸入便可。

觀察helloworld目錄(Define value for artifactId輸入的項目名稱)下生成的文件和目錄:

·         項目構建文件: pom.xml

·         代碼框架: src\main\java\com\easymorse\App.java

·         測試代碼: src\test\java\com\easymorse\AppTest.java

 

2.2.1.2. 運行Maven項目

 

命令行進入helloworld目錄Define value for artifactId輸入的項目名稱)。

項目打包

 

mvn package

 

檢查命令生成了什麼?

·         target目錄

·         編譯了代碼

·         編譯了測試代碼

·         使用junit測試並生成的報告

·         生成代碼的jar文件

運行打包的jar文件:

 

java -cp  target\helloworld-1.0-SNAPSHOT.jar com.easymorse.App

 

編譯源程序

 

mvn compile

 

編譯並測試

 

mvn test

 

清空生成的文件

 

mvn clean

 

maven項目轉化爲eclipse項目

命令行運行:

 

mvn eclipse:eclipse

 

打開eclipse,菜單選擇:file>import>general>existing projects into workspace,在對話框中選中目錄,導入便可。

若是要清除有關eclipse項目的配置信息:

 

mvn -Dwtpversion=1.0 eclipse:clean

 

聯合使用

 

mvn eclipse:clean clean

 

 

2.2.2. 實現Web項目

 

經過maven在命令行下建立java web項目。

 

2.2.2.1. 建立Maven項目

 

在命令行輸入,這一步和建立java項目相似:

 

mvn archetype:generate

 

交互步驟說明:

·         Choose a number: 回車便可,也就是選擇18,這裏和java普通項目不同

·         Define value for groupId: 輸入組織id,好比easymorse.com

·         Define value for artifactId:輸入項目名稱,好比helloworld

·         Define value for version: 輸入版本號,能夠直接回車,默認是1.0-SNAPSHOT

·         Define value for package: java的包名,好比com.easymorse

·         而後回車表示確認上述輸入便可。

須要在pom.xml文件中增長servlet容器的插件:

 

 <build>     
    <plugins>            
        <plugin>                              
            <groupId>org.codehaus.mojo</groupId>             
            <artifactId>tomcat-maven-plugin</artifactId>                        
        </plugin>                 
        <plugin>                              
            <groupId>org.mortbay.jetty</groupId>           
            <artifactId>maven-jetty-plugin</artifactId>                
            <version>6.1.6</version>                     
        </plugin>                       
        <plugin>                              
            <artifactId>maven-compiler-plugin</artifactId>         
            <configuration>             
                 <source>1.6</source>          
                 <target>1.6</target>                  
                 <encoding>UTF-8</encoding>                  
            </configuration>              
        </plugin>       
    </plugins>   
 </build>

 

·         tomcat插件

·         jetty插件

·         編譯插件的配置

repository目錄的做用

repository的位置,在用戶目錄的.m2目錄下。

repository目錄的做用,對依賴類庫的緩存。

 

2.2.2.2. 運行Maven項目

 

項目打包

 

mvn package

 

啓動tomcat

 

mvn tomcat:run

 

啓動jetty

 

mvn jetty:run

 

轉化爲eclipse項目

 

mvn -Dwtpversion=1.5 eclipse:eclipse

 

這樣生成wtp插件的web項目。

打開eclipse,菜單選擇:file>import>general>existing projects into workspace,在對話框中選中目錄,導入便可。

另外,須要在eclipse裏建立一個classpath變量,名稱爲:M2_REPO,值爲系統用戶下.m2/repository目錄。

 

3. POM文件的基本配置

 

 

3.1. POM介紹

 

 

3.1.1. 什麼是POM

 

Project Object Model,項目對象模型。

經過xml格式保存的pom.xml文件。

做用相似antbuild.xml文件,功能更強大。

該文件用於管理:源代碼、配置文件、開發者的信息和角色、問題追蹤系統、組織信息、項目受權、項目的url、項目的依賴關係等等。

 

3.1.2. 快速瀏覽

 

一個完整的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/maven-v4_0_0.xsd">  
   <modelVersion>4.0.0</modelVersion>   
<!-- The Basics -->   
 <groupId>...</groupId>  
 <artifactId>...</artifactId>  
 <version>...</version>  
 <packaging>...</packaging>   
 <dependencies>...</dependencies>  
 <parent>...</parent>   
 <dependencyManagement>...</dependencyManagement>  
 <modules>...</modules>  
 <properties>...</properties>   

<!-- Build Settings -->  
 <build>...</build>   
 <reporting>...</reporting>   

<!-- More Project Information -->   
 <name>...</name>  
 <description>...</description>
 <url>...</url>  
 <inceptionYear>...</inceptionYear>  
 <licenses>...</licenses>  
 <organization>...</organization> 
 <developers>...</developers>  
 <contributors>...</contributors>  
 

 <!-- Environment Settings -->   
 <issueManagement>...</issueManagement>   
 <ciManagement>...</ciManagement>  
 <mailingLists>...</mailingLists>  
 <scm>...</scm>   
 <prerequisites>...</prerequisites>   
 <repositories>...</repositories>  
 <pluginRepositories>...</pluginRepositories>
 <distributionManagement>...</distributionManagement>  
 <profiles>...</profiles>
</project>

 

 

3.2. 基本設置

 

 

3.2.1. 協做關係

 

 

<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>org.codehaus.mojo</groupId>  
  <artifactId>my-project</artifactId>  
  <version>1.0</version>  
  <packaging>war</packaging>
</project>

 

·         groupId : 組織標識,例如:org.codehaus.mojo,在M2_REPO目錄下,將是: org/codehaus/mojo目錄。

·         artifactId : 項目名稱,例如:my-project,在M2_REPO目錄下,將是:org/codehaus/mojo/my-project目錄。

·         version : 版本號,例如:1.0,在M2_REPO目錄下,將是:org/codehaus/mojo/my-project/1.0目錄。

·         packaging : 打包的格式,能夠爲:pom , jar , maven-plugin , ejb , war , ear , rar , par

 

3.2.2. POM間關係

 

 

3.2.2.1. 依賴關係

 

依賴關係列表(dependency list)是POM的重要部分。

 

 <dependencies>   
   <dependency>    

     <groupId>junit</groupId>   
     <artifactId>junit</artifactId>    
     <version>4.0</version>      
     <scope>test</scope>    
    </dependency>     ...  
</dependencies>

 

·         groupId , artifactId , version :

·         scope : compile(default),provided,runtime,test,system

·         exclusions

如何查到依賴的類庫?

通常能夠經過這個網站:http://www.mvnrepository.com

好比查詢hibernate,能夠找到結果列表中的hibernate類庫條目。

點擊:http://www.mvnrepository.com/artifact/org.hibernate/hibernate

選擇版本,好比3.2.6ga,即:http://www.mvnrepository.com/art ... /hibernate/3.2.6.ga

複製文章中的:

 

<dependency>     
   <groupId>org.hibernate</groupId>  
   <artifactId>hibernate</artifactId> 
   <version>3.2.6.ga</version>
</dependency>

 

pom.xml文件中便可。

是否還須要找到hibernate依賴的pom

不須要,hibernate也會有pommaven會經過它的pom自動找到它依賴的類庫。

 

3.2.2.2. 繼承關係

 

繼承其餘pom.xml配置的內容。

maven提供了一個相似java.lang.Object的頂級父pom.xml文件。

能夠經過下面命令查看當前pom.xml受到超pom.xml文件的影響:

 

mvn help:effective-pom

 

建立一個各類項目可複用的pom.xml文件:http://easymorse.googlecode.com/svn/trunk/pom/pom.xml

部署要複用的pom.xml文件:

 

mvn install

 

在本身的pom文件中繼承上述pom

 

   <parent>                
       <groupId>com.easymorse</groupId>          
       <artifactId>pom</artifactId>     
       <version>0.1</version>  
   </parent>

 

 

3.2.2.3. 聚合關係

 

用於將多個maven項目聚合爲一個大的項目。

好比目錄結構以下:

 

. |-- pom.xml 
  |-- module-a   
     `-- pom.xml 
  |-- module-b   
     `-- pom.xml 
  |-- module-c  
     `-- pom.xml 
 |-- foo-all   
     `-- pom.xml

 

那麼總的pom.xml文件相似:

 

...     <modules>      
     <module>module-a</module>       
     <module>module-b</module>     
     <module>module-c</module>    
     <module>foo-all</module>  
    </modules>
</project>

 

參考文檔:http://maven.apache.org/plugins/maven-eclipse-plugin/reactor.html

原文示例有誤,見:modules.rar

 

3.2.3. 其餘配置

 

maven的屬性,是值的佔位符,相似EL,相似ant的屬性,好比${X},可用於pom文件任何賦值的位置。

有如下分類:

·         env.X:操做系統環境變量,好比${env.PATH}

·         project.xpom文件中的屬性,好比:<project><version>1.0</version></project>,引用方式:${project.version}

·         settings.xsettings.xml文件中的屬性,好比:<settings><offline>false</offline></settings>,引用方式:${settings.offline}

·         Java System Propertiesjava.lang.System.getProperties()中的屬性,好比java.home,引用方式:${java.home}

·         自定義:在pom文件中能夠:<properties><installDir>c:/apps/cargo-installs</installDir></properties>,引用方式:${installDir}

 

3.3. 其餘

 

 

3.3.1. 設置離線

 

.m2目錄下建立settings.xml文件(若是沒有的話)

 

<settings 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/settings-1.0.0.xsd">         <offline>true</offline></settings>

 

 

3.3.2. 安裝第三方包

 

常常有第三方包,由於一些緣由,在網上repository上沒有,須要本身動手安裝。

好比sun某些版本的jar文件,好比oracle的驅動。

oracle驅動程序爲例,好比驅動路徑爲c:/driver/ojdbc14.jar,是10.2.0.3.0版本

在該網址可以查到:http://www.mvnrepository.com/artifact/com.oracle/ojdbc14 artifactIdgroupId

 

mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=c:/driver/ojdbc14.jar

 

這樣就能夠在pom中依賴引用了:

 

<dependency>     <groupId>com.oracle</groupId>     <artifactId>ojdbc14</artifactId>     <version>10.2.0.3.0</version></dependency>

 

 

3.3.3. 部署到tomcat

 

tomcat配置有管理權限的用戶:conf\tomcat-users.xml

 

<?xml version='1.0' encoding='utf-8'?><tomcat-users>   <role rolename="manager"/>   <user username="marshal" password="password" roles="manager"/></tomcat-users>

 

pom文件的tomcat插件中添加:

 

                        <plugin>                                 <groupId>org.codehaus.mojo</groupId>                                 <artifactId>tomcat-maven-plugin</artifactId>                                 <configuration>                                         <url>http://localhost:8080/manager</url>                                         <server>myserver</server>                                         <path>/mycontext</path>                                 </configuration>                         </plugin>

 

.m2/settings.xml文件中增長:

 

<settings 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/settings-1.0.0.xsd">         <servers>                 <server>                         <id>myserver</id>                         <username>marshal</username>                         <password>password</password>                 </server>         </servers></settings>

 

運行打包部署,在maven項目目錄下:

 

mvn tomcat:deploy

 

而後訪問:http://localhost:8080/mycontext/ 便可。

撤銷部署:

 

mvn tomcat:undeploy

 

啓動web應用:

 

mvn tomcat:start

 

中止web應用:

 

mvn tomcat:stop

 

從新部署:

 

mvn tomcat:redeploy

 

部署展開的war文件:

 

mvn war:exploded tomcat:exploded

 

 

3.3.4. 未講到的內容

 

·         settings.xml的配置

·         pom.xml的詳細配置

·         自定義插件的方法:http://maven.apache.org/plugins/maven-archetype-plugin/examples/archetype.html

·         自定義goal的執行:<preGoal><postGoal>

·         插件的查詢和使用

·         搭建鏡像repository

·         maven中調用ant

相關文章
相關標籤/搜索