日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

maven常见问题问答

發布時間:2024/4/17 编程问答 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 maven常见问题问答 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://www.cnblogs.com/BigTall/archive/2011/03/23/1993253.html

1.前言

Maven,發音是[`meivin],"專家"的意思。它是一個很好的項目管理工具,很早就進入了我的必備工具行列,但是這次為了把project1項目完全遷移并應用maven,所以對maven進行了一些深入的學習。寫這個學習筆記的目的,一個是為了自己備忘,二則希望能夠為其他人學習使用maven 縮短一些時間。

2. maven概要

首先我把maven的概念快速的梳理一下,讓我們快速地建立起一個比較精確的maven應用場景。

2.1 maven不是什么

讀書時候要先限定范圍,避免一些有害的遐想。要說maven不是什么,我們可以從如下幾個要點來展開

  • maven不是ant,也不是make。
    我們以前接觸的構建工具,需要寫一些詳細的步驟,比如: compile project1/src/*.java 等類似的語句。這些語句正是我們使用ant和make所要編寫的東西。maven采用了"約定優于配置"的方法,一些開發常用的操作和步驟已經固化在 maven中,所以使用者不再需要去編寫那些煩人的語句了。同時,maven內置了開發流程的支持,它不僅能夠編譯,同樣能夠打包、發布,也能夠一氣呵成做完這些所有的步驟。
  • maven不是ivy
    依賴管理是maven的功能之一,雖然很多人包括我以前都是只用它的依賴管理功能,但是要深入運用的話,我們就可以看到更多的內容。更重要的是,maven在依賴關系中加入了scope的概念,進一步細化了依賴關系的劃分。
  • 2.2 maven是什么

    maven將自己定位為一個項目管理工具。它負責管理項目開發過程中的幾乎所有的東西:

  • 版本
    maven有自己的版本定義和規則
  • 構建
    maven支持許多種的應用程序類型,對于每一種支持的應用程序類型都定義好了一組構建規則和工具集。
  • 輸出物管理
    maven可以管理項目構建的產物,并將其加入到用戶庫中。這個功能可以用于項目組和其他部門之間的交付行為。
  • 依賴關系
    maven對依賴關系的特性進行細致的分析和劃分,避免開發過程中的依賴混亂和相互污染行為
  • 文檔和構建結果
    maven的site命令支持各種文檔信息的發布,包括構建過程的各種輸出,javadoc,產品文檔等。
  • 項目關系
    一個大型的項目通常有幾個小項目或者模塊組成,用maven可以很方便地管理
  • 移植性管理
    maven可以針對不同的開發場景,輸出不同種類的輸出結果。
  • 2.3 maven的生命周期

    maven把項目的構建劃分為不同的生命周期(lifecycle),在我看來,劃分的已經是非常仔細了,大家可以參考這里 。粗略一點的話,它這個過程(phase)包括:編譯、測試、打包、集成測試、驗證、部署。maven中所有的執行動作(goal)都需要指明自己在這個過程中的執行位置,然后maven執行的時候,就依照過程的發展依次調用這些goal進行各種處理。

    這個也是maven的一個基本調度機制。一般來說,位置稍后的過程都會依賴于之前的過程。當然,maven同樣提供了配置文件,可以依照用戶要求,跳過某些階段。

    2.4 maven的"約定優于配置"

    所謂的"約定優于配置",在maven中并不是完全不可以修改的,他們只是一些配置的默認值而已。但是使用者除非必要,并不需要去修改那些約定內容。maven默認的文件存放結構如下:

    • /項目目錄
      • pom.xml 用于maven的配置文件
      • /src 源代碼目錄
        • /src/main 工程源代碼目錄
          • /src/main/java 工程java源代碼目錄
        • /src/main/resource 工程的資源目錄
        • /src/test 單元測試目錄
          • /src/test/java
      • /target 輸出目錄,所有的輸出物都存放在這個目錄下
        • /target/classes 編譯之后的class文件

    每一個階段的任務都知道怎么正確完成自己的工作,比如compile任務就知道從src/main/java下編譯所有的java文件,并把它的輸出class文件存放到target/classes中。

    對maven來說,采用"約定優于配置"的策略可以減少修改配置的工作量,也可以降低學習成本,更重要的是,給項目引入了統一的規范。

    2.5 maven的版本規范

    maven使用如下幾個要素來唯一定位某一個輸出物: groupId:artifactId:packaging:version 。比如 org.springframework:spring:2.5 。每個部分的解釋如下:

    • groupId
      團體,公司,小組,組織,項目,或者其它團體。團體標識的約定是,它以創建這個項目的組織名稱的逆向域名(reverse domain name)開頭。來自Sonatype的項目有一個以com.sonatype開頭的groupId,而Apache Software的項目有以org.apache開頭的groupId。
    • artifactId
      在groupId下的表示一個單獨項目的唯一標識符。比如我們的tomcat, commons等。不要在artifactId中包含點號(.)。
    • version
      一個項目的特定版本。發布的項目有一個固定的版本標識來指向該項目的某一個特定的版本。而正在開發中的項目可以用一個特殊的標識,這種標識給版本加上一個"SNAPSHOT"的標記。
      雖然項目的打包格式也是Maven坐標的重要組成部分,但是它不是項目唯一標識符的一個部分。一個項目的 groupId:artifactId:version使之成為一個獨一無二的項目;你不能同時有一個擁有同樣的groupId, artifactId和version標識的項目。
    • packaging
      項目的類型,默認是jar,描述了項目打包后的輸出。類型為jar的項目產生一個JAR文件,類型為war的項目產生一個web應用。
    • classifier
      很少使用的坐標,一般都可以忽略classifiers。如果你要發布同樣的代碼,但是由于技術原因需要生成兩個單獨的構件,你就要使用一個分類器(classifier)。例如,如果你想要構建兩個單獨的構件成JAR,一個使用Java 1.4編譯器,另一個使用Java 6編譯器,你就可以使用分類器來生成兩個單獨的JAR構件,它們有同樣的groupId:artifactId:version組合。如果你的項目使用本地擴展類庫,你可以使用分類器為每一個目標平臺生成一個構件。分類器常用于打包構件的源碼,JavaDoc或者二進制集合。

    maven有自己的版本規范,一般是如下定義 <major version>.<minor version>.<incremental version>-<qualifier> ,比如1.2.3-beta-01。要說明的是,maven自己判斷版本的算法是major,minor,incremental部分用數字比較,qualifier部分用字符串比較,所以要小心 alpha-2和alpha-15的比較關系,最好用 alpha-02的格式。

    maven在版本管理時候可以使用幾個特殊的字符串 SNAPSHOT ,LATEST ,RELEASE 。比如"1.0-SNAPSHOT"。各個部分的含義和處理邏輯如下說明:

    • SNAPSHOT
      如果一個版本包含字符串"SNAPSHOT",Maven就會在安裝或發布這個組件的時候將該符號展開為一個日期和時間值,轉換為UTC時間。例如,"1.0-SNAPSHOT"會在2010年5月5日下午2點10分發布時候變成1.0-20100505-141000-1。
      這個詞只能用于開發過程中,因為一般來說,項目組都會頻繁發布一些版本,最后實際發布的時候,會在這些snapshot版本中尋找一個穩定的,用于正式發布,比如1.4版本發布之前,就會有一系列的1.4-SNAPSHOT,而實際發布的1.4,也是從中拿出來的一個穩定版。
    • LATEST
      指某個特定構件的最新發布,這個發布可能是一個發布版,也可能是一個snapshot版,具體看哪個時間最后。
    • RELEASE
      指最后一個發布版。

    2.6 maven的組成部分

    maven把整個maven管理的項目分為幾個部分,一個部分是源代碼,包括源代碼本身、相關的各種資源,一個部分則是單元測試用例,另外一部分則是各種maven的插件。對于這幾個部分,maven可以獨立管理他們,包括各種外部依賴關系。

    2.7 maven的依賴管理

    依賴管理一般是最吸引人使用maven的功能特性了,這個特性讓開發者只需要關注代碼的直接依賴,比如我們用了spring,就加入spring依賴說明就可以了,至于spring自己還依賴哪些外部的東西,maven幫我們搞定。

    任意一個外部依賴說明包含如下幾個要素:groupId, artifactId, version, scope, type, optional。其中前3個是必須的,各自含義如下:

    • groupId 必須
    • artifactId 必須
    • version 必須。
      這里的version可以用區間表達式來表示,比如(2.0,)表示>2.0,[2.0,3.0)表示2.0<=ver<3.0;多個條件之間用逗號分隔,比如[1,3),[5,7]。
    • scope 作用域限制
    • type 一般在pom引用依賴時候出現,其他時候不用
    • optional 是否可選依賴

    maven認為,程序對外部的依賴會隨著程序的所處階段和應用場景而變化,所以maven中的依賴關系有作用域(scope)的限制。在maven中,scope包含如下的取值:

    • compile(編譯范圍)
      compile是默認的范圍;如果沒有提供一個范圍,那該依賴的范圍就是編譯范圍。編譯范圍依賴在所有的classpath中可用,同時它們也會被打包。
    • provided(已提供范圍)
      provided依賴只有在當JDK或者一個容器已提供該依賴之后才使用。例如,如果你開發了一個web應用,你可能在編譯classpath中需要可用的Servlet API來編譯一個servlet,但是你不會想要在打包好的WAR中包含這個Servlet API;這個Servlet API JAR由你的應用服務器或者servlet容器提供。已提供范圍的依賴在編譯classpath(不是運行時)可用。它們不是傳遞性的,也不會被打包。
    • runtime(運行時范圍)
      runtime依賴在運行和測試系統的時候需要,但在編譯的時候不需要。比如,你可能在編譯的時候只需要JDBC API JAR,而只有在運行的時候才需要JDBC驅動實現。
    • test(測試范圍)
      test范圍依賴 在一般的 編譯和運行時都不需要,它們只有在測試編譯和測試運行階段可用。測試范圍依賴在之前的???中介紹過。
    • system(系統范圍)
      system范圍依賴與provided類似,但是你必須顯式的提供一個對于本地系統中JAR文件的路徑。這么做是為了允許基于本地對象編譯,而這些對象是系統類庫的一部分。這樣的構件應該是一直可用的,Maven也不會在倉庫中去尋找它。 如果你將一個依賴范圍設置成系統范圍,你必須同時提供一個systemPath元素 。注意該范圍是不推薦使用的(你應該一直盡量去從公共或定制的Maven倉庫中引用依賴)。

    另外,代碼有代碼自己的依賴,各個maven使用的插件也可以有自己的依賴關系。依賴也可以是可選的,比如我們代碼中沒有任何cache依賴,但是hibernate可能要配置cache,所以該cache的依賴就是可選的。

    2.8 多項目管理

    maven的多項目管理也是非常強大的。一般來說,maven要求同一個工程的所有子項目都放置到同一個目錄下,每一個子目錄代表一個項目,比如

    • 總項目/
      • pom.xml 總項目的pom配置文件
      • 子項目1/
        • pom.xml 子項目1的pom文件
      • 子項目2/
        • pom.xml 子項目2的pom文件

    按照這種格式存放,就是繼承方式,所有具體子項目的pom.xml都會繼承總項目pom的內容,取值為子項目pom內容優先。

    要設置繼承方式,首先要在總項目的pom中加入如下配置

    <modules>
    ???
    <module>simple-weather</module>
    ???
    <module>simple-webapp</module>
    </modules>

    ????????

    其次在每個子項目中加入

    <parent>
    ???
    <groupId>org.sonatype.mavenbook.ch06</groupId>
    ???
    <artifactId>simple-parent</artifactId>
    ???
    <version>1.0</version>
    </parent>?

    即可。

    當然,繼承不是唯一的配置文件共用方式,maven還支持引用方式。引用pom的方式更簡單,在依賴中加入一個type為pom的依賴即可。


    ?

    <project>
    ???
    <description>This is a project requiring JDBC</description>
    ??? ...
    ???
    <dependencies>
    ??????? ...
    ???????
    <dependency>
    ???????????
    <groupId>org.sonatype.mavenbook</groupId>
    ???????????
    <artifactId>persistence-deps</artifactId>
    ???????????
    <version>1.0</version>
    ???????????
    <type>pom</type>
    ???????
    </dependency>
    ???
    </dependencies>
    </project>

    ????????

    2.9 屬性

    用戶可以在maven中定義一些屬性,然后在其他地方用${xxx}進行引用。比如:


    ?

    <project>
    ???
    <modelVersion>4.0.0</modelVersion>
    ??? ...
    ???
    <properties>
    ???????
    <var1>value1</var1>
    ???
    </properties>
    </project>

    maven提供了三個隱式的變量,用來訪問系統環境變量、POM信息和maven的settings:

    • env
      暴露操作系統的環境變量,比如env.PATH
    • project
      暴露POM中的內容,用點號(.)的路徑來引用POM元素的值,比如${project.artifactId}。另外,java的系統屬性比如user.dir等,也暴露在這里。
    • settings
      暴露maven的settings的信息,也可以用點號(.)來引用。maven把系統配置文件存放在maven的安裝目錄中,把用戶相關的配置文件存放在~/.m2/settings.xml(unix)或者%USERPROFILE%/.m2/settings.xml(windows)中。

    2.10 maven的profile

    profile是maven的一個重要特性,它可以讓maven能夠自動適應外部的環境變化,比如同一個項目,在linux下編譯linux的版本,在win下編譯win的版本等。一個項目可以設置多個profile,也可以在同一時間設置多個profile被激活(active)的。自動激活的 profile的條件可以是各種各樣的設定條件,組合放置在activation節點中,也可以通過命令行直接指定。profile包含的其他配置內容可以覆蓋掉pom定義的相應值。如果認為profile設置比較復雜,可以將所有的profiles內容移動到專門的 profiles.xml 文件中,不過記得和pom.xml放在一起。

    activation節點中的激活條件中常見的有如下幾個:

  • os
    判斷操作系統相關的參數,它包含如下可以自由組合的子節點元素
    • message - 規則失敗之后顯示的消息
    • arch - 匹配cpu結構,常見為x86
    • family - 匹配操作系統家族,常見的取值為:dos,mac,netware,os/2,unix,windows,win9x,os/400等
    • name - 匹配操作系統的名字
    • version - 匹配的操作系統版本號
    • display - 檢測到操作系統之后顯示的信息
  • jdk
    檢查jdk版本,可以用區間表示。
  • property
    檢查屬性值,本節點可以包含name和value兩個子節點。
  • file
    檢查文件相關內容,包含兩個子節點:exists和missing,用于分別檢查文件存在和不存在兩種情況。
  • 3. maven的操作和使用

    maven的操作有兩種方式,一種是通過mvn命令行命令,一種是使用maven的eclipse插件。因為使用eclipse的maven插件操作起來比較容易,這里就只介紹使用mvn命令行的操作。

    3.1 maven的配置文件

    maven的主執行程序為mvn.bat,linux下為mvn.sh,這兩個程序都很簡單,它們的共同用途就是收集一些參數,然后用 java.exe來運行maven的Main函數。maven同樣需要有配置文件,名字叫做settings.xml,它放在兩個地方,一個是maven 安裝目錄的conf目錄下,對所有使用該maven的用戶都起作用,我們稱為主配置文件,另外一個放在 %USERPROFILE%/.m2/settings.xml下,我們成為用戶配置文件,只對當前用戶有效,且可以覆蓋主配置文件的參數內容。還有就是項目級別的配置信息了,它存放在每一個maven管理的項目目錄下,叫pom.xml,主要用于配置項目相關的一些內容,當然,如果有必要,用戶也可以在 pom中寫一些配置,覆蓋住配置文件和用戶配置文件的設置參數內容。

    一般來說,settings文件配置的是比如repository庫路徑之類的全局信息,具體可以參考官方網站的文章 。

    3.2 創建新工程

    要創建一個新的maven工程,我們需要給我們的工程指定幾個必要的要素,就是maven產品坐標的幾個要素:groupId, artifactId,如果愿意,你也可以指定version和package名稱。我們先看一個簡單的創建命令:

    d:\work\temp>mvn archetype:create -DgroupId=com.abc -DartifactId=product1 -DarchetypeArtifactId=maven-archetype-webapp

    首先看這里的命令行參數的傳遞結構,怪異的 -D參數=值 的方式是 java.exe 要求的方式。這個命令創建一個web工程,目錄結構是一個標準的maven結構,如下:

    D:.
    └─mywebapp
    ??? │? pom
    .xml
    ??? │
    ??? └─src
    ??????? └─main
    ??????????? ├─resources
    ??????????? └─webapp
    ??????????????? │? index
    .jsp
    ??????????????? │
    ??????????????? └─WEB-INF
    ??????????????????? web
    .xml

    大家要注意,這里目錄結構的布局實際上是由參數 archetypeArtifactId 來決定的,因為這里傳入的是 maven-archetype-webapp 如果我們傳入其他的就會創建不同的結構,默認值為 maven-archetype-quickstart ,有興趣的讀者可以參考更詳細的列表 ,我把部分常用的列表在這里:

    ArtifactGroupVersionRepositoryDescription
    maven-archetype-j2ee-simpleorg.apache.maven.archetypes??A simple J2EE Java application
    maven-archetype-marmalade-mojoorg.apache.maven.archetypes??A Maven plugin development project using marmalade
    maven-archetype-pluginorg.apache.maven.archetypes??A Maven Java plugin development project
    maven-archetype-portletorg.apache.maven.archetypes??A simple portlet application
    maven-archetype-profilesorg.apache.maven.archetypes???
    maven-archetype-quickstartorg.apache.maven.archetypes???
    maven-archetype-simpleorg.apache.maven.archetypes???
    maven-archetype-site-simpleorg.apache.maven.archetypes??A simple site generation project
    maven-archetype-siteorg.apache.maven.archetypes??A more complex site project
    maven-archetype-webapporg.apache.maven.archetypes??A simple Java web application
    maven-archetype-harnet.sf.maven-har0.9?Hibernate Archive
    maven-archetype-sarnet.sf.maven-sar0.9?JBoss Service Archive

    大家可以參考更詳細的 archetype:create 幫助 和 archtype參考信息 。

    3.3 maven的多項目管理

    多項目管理是maven的主要特色之一,對于一個大型工程,用maven來管理他們之間復雜的依賴關系,是再好不過了。maven的項目配置之間的關系有兩種:繼承關系和引用關系。
    maven默認根據目錄結構來設定pom的繼承關系,即下級目錄的pom默認繼承上級目錄的pom。要設定兩者之間的關系很簡單,上級pom如下設置:

    <modules>
    ???
    <module>ABCCommon</module>
    ???
    <module>ABCCore</module>
    ???
    <module>ABCTools</module>
    </modules>

    要記住的是,這里的module是目錄名,不是子工程的artifactId。子工程如下設置:


    ?

    <parent>
    ???
    <groupId>com.abc.product1</groupId>
    ???
    <artifactId>abc-product1</artifactId>
    ???
    <version>1.0.0-SNAPSHOT</version>
    </parent>
    <artifactId>abc-my-module2</artifactId>
    <packaging>jar</packaging>

    這樣兩者就相互關聯起來了,繼承關系就設定完畢,所有父工程的配置內容都會自動在子工程中生效,除非子工程有相同的配置覆蓋。如果你不喜歡層層遞進的目錄結構來實現繼承,也可以在parent中加入 <relativePath>../a-parent/pom.xml</relativePath> 來制定parent項目的相對目錄。繼承關系通常用在項目共同特性的抽取上,通過抽取公共特性,可以大幅度減少子項目的配置工作量。

    引用關系是另外一種復用的方式,maven中配置引用關系也很簡單,加入一個 type 為 pom 的依賴即可。

    <dependency>
    ???
    <groupId>org.sonatype.mavenbook</groupId>
    ???
    <artifactId>persistence-deps</artifactId>
    ???
    <version>1.0</version>
    ???
    <type>pom</type>
    </dependency>

    但是無論是父項目還是引用項目,這些工程都必須用 mvn install 或者 mvn deploy 安裝到本地庫才行,否則會報告依賴沒有找到,eclipse編譯時候也會出錯。

    需要特別提出的是復用過程中,父項目的pom中可以定義 dependencyManagement 節點,其中存放依賴關系,但是這個依賴關系只是定義,不會真的產生效果,如果子項目想要使用這個依賴關系,可以在本身的 dependency 中添加一個簡化的引用

    <dependency>
    ???
    <groupId>org.springframework</groupId>
    ???
    <artifactId>spring</artifactId>
    </dependency>

    這種方法可以避免版本號滿天飛的情況。

    3.4 安裝庫文件到maven庫中

    在maven中一般都會用到安裝庫文件的功能,一則是我們常用的hibernate要使用jmx庫,但是因為sun的license限制,所以無法將其直接包含在repository中。所以我們使用mvn命令把jar安裝到我們本地的repository中

    mvn install:install-file -DgroupId=com.sun.jdmk -DartifactId=jmxtools -Dversion=1.2.1 -Dpackaging=jar -Dfile=/path/to/file

    如果我們想把它安裝到公司的repository中,需要使用命令

    mvn deploy:deploy-file -DgroupId=com.sun.jdmk -DartifactId=jmxtools -Dversion=1.2.1 -Dpackaging=jar -Dfile=/path/to/file -Durl=http://xxx.ss.com/sss.xxx -DrepositoryId=release-repo

    對于我們的工程輸出,如果需要放置到公司的repository中的話,可以通過配置pom來實現

    <distributionManagement>
    ???
    <repository>
    ???????
    <id>mycompany-repository</id>
    ???????
    <name>MyCompany Repository</name>
    ???????
    <url>scp://repository.mycompany.com/repository/maven2</url>
    ???
    </repository>
    </distributionManagement>

    這里使用的scp方式提交庫文件,還有其他方式可以使用,請參考faq部分。然后記得在你的settings.xml中加入這一內容


    ?

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
    ????????? xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
    ????????? xsi:schemaLocation
    ="http://maven.apache.org/SETTINGS/1.0.0
    ????????? http://maven.apache.org/xsd/settings-1.0.0.xsd"
    >
    ??? ...
    ???
    <servers>
    ???????
    <server>
    ???????????
    <id>mycompany-repository</id>
    ???????????
    <username>jvanzyl</username>
    ???????????
    <!-- Default value is ~/.ssh/id_dsa -->
    ???????????
    <privateKey>/path/to/identity</privateKey>
    ???????????
    <passphrase>my_key_passphrase</passphrase>
    ???????
    </server>
    ???
    </servers>
    ??? ...
    </settings>

    ????????

    ?

    3.5 maven的變量

    maven定義了很多變量屬性,參考這里 http://docs.codehaus.org/display/MAVENUSER/MavenPropertiesGuide

  • 內置屬性
    • ${basedir } represents the directory containing pom.xml
    • ${version } equivalent to ${project.version } or ${pom.version }
  • Pom/Project properties
    所有pom中的元素都可以用 project. 前綴進行引用,以下是部分常用的
    • ${project.build.directory } results in the path to your "target" dir, this is the same as ${pom.project.build.directory }
    • ${project.build. outputD irectory } results in the path to your "target/classes" dir
    • ${project.name } refers to the name of the project.
    • ${project.version } refers to the version of the project.
    • ${project.build.finalName } refers to the final name of the file created when the built project is packaged
  • 本地用戶設定
    所有用的的 settings.xml 中的設定都可以通過 settings. 前綴進行引用
    • ${settings.localRepository } refers to the path of the user's local repository.
    • ${maven.repo.local } also works for backward compatibility with maven1 ??
  • 環境變量
    系統的環境變量通過 env. 前綴引用
    • ${env.M2_HOME } returns the Maven2 installation path.
    • ${java.home } specifies the path to the current JRE_HOME environment use with relative paths to get for example:
      <jvm>${java.home}../bin/java.exe</jvm>
  • java系統屬性
    所有JVM中定義的java系統屬性.
  • 用戶在pom中定義的自定義屬性 <project>
    ??? ...
    ???
    <properties>
    ???????
    <my.filter.value>hello</my.filter.value>
    ???
    </properties>
    ??? ...
    </project>
    則引用 ${my.filter.value } 就會得到值 hello?
  • 上級工程的變量
    上級工程的pom中的變量用前綴 ${project.parent } 引用. 上級工程的版本也可以這樣引用: ${parent.version }.
  • 3.6 maven的使用

    我們已經知道maven預定義了許多的階段(phase),每個插件都依附于這些階段,并且在進入某個階段的時候,調用運行這些相關插件的功能。我們先來看完整的maven生命周期:

    生命周期階段描述
    validate驗證項目是否正確,以及所有為了完整構建必要的信息是否可用
    generate-sources生成所有需要包含在編譯過程中的源代碼
    process-sources處理源代碼,比如過濾一些值
    generate-resources生成所有需要包含在打包過程中的資源文件
    process-resources復制并處理資源文件至目標目錄,準備打包
    compile編譯項目的源代碼
    process-classes后處理編譯生成的文件,例如對Java類進行字節碼增強(bytecode enhancement)
    generate-test-sources生成所有包含在測試編譯過程中的測試源碼
    process-test-sources處理測試源碼,比如過濾一些值
    generate-test-resources生成測試需要的資源文件
    process-test-resources復制并處理測試資源文件至測試目標目錄
    test-compile編譯測試源碼至測試目標目錄
    test使用合適的單元測試框架運行測試。這些測試應該不需要代碼被打包或發布
    prepare-package在真正的打包之前,執行一些準備打包必要的操作。這通常會產生一個包的展開的處理過的版本(將會在Maven 2.1+中實現)
    package將編譯好的代碼打包成可分發的格式,如JAR,WAR,或者EAR
    pre-integration-test執行一些在集成測試運行之前需要的動作。如建立集成測試需要的環境
    integration-test如果有必要的話,處理包并發布至集成測試可以運行的環境
    post-integration-test執行一些在集成測試運行之后需要的動作。如清理集成測試環境。
    verify執行所有檢查,驗證包是有效的,符合質量規范
    install安裝包至本地倉庫,以備本地的其它項目作為依賴使用
    deploy復制最終的包至遠程倉庫,共享給其它開發人員和項目(通常和一次正式的發布相關)

    maven核心的插件列表可以參考 http://maven.apache.org/plugins/index.html 。這里僅列舉幾個常用的插件及其配置參數:

  • clean插件
    只包含一個goal叫做 clean:clean ,負責清理構建時候創建的文件。 默認清理的位置是如下幾個變量指定的路徑 project.build.directory, project.build.outputDirectory, project.build.testOutputDirectory, and project.reporting.outputDirectory 。
  • compiler插件
    包含2個goal,分別是 compiler:compile 和 compiler:testCompile 。可以到這里查看兩者的具體參數設置:compile , testCompile 。
  • surefire插件
    運行單元測試用例的插件,并且能夠生成報表。包含一個goal為 surefire:test 。主要參數testSourceDirectory用來指定測試用例目錄,參考完整用法幫助
  • jar
    負責將工程輸出打包到jar文件中。包含兩個goal,分別是 jar:jar , jar:test-jar 。兩個goal負責從classesDirectory或testClassesDirectory中獲取所有資源,然后輸出jar文件到outputDirectory中。
  • war
    負責打包成war文件。常用goal有 war:war ,負責從warSourceDirectory(默認${basedir}/src/main/webapp)打包所有資源到outputDirectory中。
  • resources
    負責復制各種資源文件,常用goal有 resources:resources ,負責將資源文件復制到outputDirectory中,默認為${project.build.outputDirectory}。
  • install
    負責將項目輸出(install:install)或者某個指定的文件(install:install-file)加入到本機庫%USERPROFILE%/.m2/repository中。可以用 install:help 尋求幫助。
  • deploy
    負責將項目輸出(deploy:deploy)或者某個指定的文件(deploy:deploy-file)加入到公司庫中。
  • site
    將工程所有文檔生成網站,生成的網站界面默認和apache的項目站點類似,但是其文檔用doxia格式寫的,目前不支持docbook,需要用其他插件配合才能支持。需要指出的是,在maven 2.x系列中和maven3.x的site命令處理是不同的,在舊版本中,用 mvn site 命令可以生成reporting節點中的所有報表,但是在maven3中,reporting過時了,要把這些內容作為 maven-site-plugin的configuration的內容才行。詳細內容可以參考http://www.wakaleo.com/blog/292-site-generation-in-maven-3
  • 4. maven的使用問答

    除了以下的幾個faq條目之外,還有一些faq可以參考

  • maven 自己的FAQ
  • 兄弟們如果有其他問題,歡迎跟帖提問!

    4.1 依賴關系

    1) 問:如何增加刪除一個依賴關系?

    答:直接在pom文件中加入一個dependency節點,如果要刪除依賴,把對應的dependency節點刪除即可。

    2) 問:如何屏蔽一個依賴關系?比如項目中使用的libA依賴某個庫的1.0版,libB以來某個庫的2.0版,現在想統一使用2.0版,如何去掉1.0版的依賴?

    答:設置exclusion即可。

    <dependency>
    ???
    <groupId>org.hibernate</groupId>
    ???
    <artifactId>hibernate</artifactId>
    ???
    <version>3.2.5.ga</version>
    ???
    <exclusions>
    ???????
    <exclusion>
    ???????????
    <groupId>javax.transaction</groupId>
    ???????????
    <artifactId>jta</artifactId>
    ???????
    </exclusion>
    ???
    </exclusions>
    </dependency>
    3) 問:我有一些jar文件要依賴,但是我又不想把這些jar去install到mvn的repository中去,怎么做配置?

    答:加入一個特殊的依賴關系,使用system類型,如下:

    <dependency>
    ???
    <groupId>com.abc</groupId>
    ???
    <artifactId>my-tools</artifactId>
    ???
    <version>2.5.0</version>
    ???
    <type>jar</type>
    ???
    <scope>system</scope>
    ???
    <systemPath>${basedir}/lib/mylib1.jar</systemPath>
    </dependency> 但是要記住,發布的時候不會復制這個jar。需要手工配置,而且其他project依賴這個project的時候,會報告警告。如果沒有特殊要求,建議直接注冊發布到repository。
    4) 問:在eclipse環境中同時使用maven builder和eclipse builder,并且設置項目依賴關系之后,為什么編譯會出現artifact找不到錯誤,但是直接使用命令行mvn構建則一切正常?

    答:在project屬性中去掉java build path中對其他 project 的依賴關系,直接在pom中設置依賴關系即可

    <!-- 依賴的其他項目 -->
    <dependency>
    ???
    <groupId>com.abc.project1</groupId>
    ???
    <artifactId>abc-project1-common</artifactId>
    ???
    <version>${project.version}</version>
    </dependency> 另外,保證沒有其他錯誤。
    5) 問:我想讓輸出的jar包自動包含所有的依賴

    答:使用 assembly 插件即可。

    <plugin>
    ???
    <artifactId>maven-assembly-plugin</artifactId>
    ???
    <configuration>
    ???????
    <descriptorRefs>
    ???????????
    <descriptorRef>jar-with-dependencies</descriptorRef>
    ???????
    </descriptorRefs>
    ???
    </configuration>
    </plugin> ?
    6) 問:我的測試用例依賴于其他工程的測試用例,如何設置?

    答:maven本身在發布的時候,可以發布單純的jar,也可以同時發布xxx-tests.jar和xxx-javadoc.jar(大家經常在repository中可以看到類似的東西)。我們自己的項目A要同時輸出test.jar可以做如下的設置

    <!-- 用于把test代碼也做成一個jar -->
    <plugin>
    ???
    <groupId>org.apache.maven.plugins</groupId>
    ???
    <artifactId>maven-jar-plugin</artifactId>
    ???
    <executions>
    ???????
    <execution>
    ???????????
    <goals>
    ???????????????
    <goal>test-jar</goal>
    ???????????
    </goals>
    ???????
    </execution>
    ???
    </executions>
    </plugin> 然后在其他需要引用的工程B中做如下的dependency設置 <dependency>
    ???
    <groupId>com.abc.XXX</groupId>
    ???
    <artifactId>工程A</artifactId>
    ???
    <version>${project.version}</version>
    ???
    <type>test-jar</type>
    ???
    <scope>test</scope>
    </dependency>
    7)如何讓maven將工程依賴的jar復制到WEB-INF/lib目錄下?

    ?

    8)我剛剛更新了一下我的nexus庫,但是我無法在eclipse中用m2eclipse找到我新增的庫文件

    修改pom.xml文件,將舊版jar的依賴內容中的版本直接修改為新版本即可。

    ?

    9)我要的jar最新版不在maven的中央庫中,我怎么辦?

    將依賴的文件安裝到本地庫,用如下命令可以完成:

    mvn install:install-file-Dfile=<path-to-file>-DgroupId=<group-id>-DartifactId=<artifact-id>-Dversion=<version>-Dpackaging=<packaging>-DgeneratePom=trueWhere: <path-to-file> the path to the file to load<group-id> the group that the file should be registered under<artifact-id> the artifact name for the file<version> the version of the file<packaging> the packaging of the file e.g. jar
    10)

    4.2 變量

    1) 問:如何使用變量替換?項目中的某個配置文件比如jdbc.properties使用了一些pom中的變量,如何在發布中使用包含真實內容的最終結果文件?

    答:使用資源過濾功能,比如:

    <project>
    ??? ...
    ???
    <properties>
    ???????
    <jdbc.driverClassName>com.mysql.jdbc.Driver</jdbc.driverClassName>
    ???????
    <jdbc.url>jdbc:mysql://localhost:3306/development_db</jdbc.url>
    ???????
    <jdbc.username>dev_user</jdbc.username>
    ???????
    <jdbc.password>s3cr3tw0rd</jdbc.password>
    ???
    </properties>
    ??? ...
    ???
    <build>
    ???????
    <resources>
    ???????????
    <resource>
    ???????????????
    <directory>src/main/resources</directory>
    ???????????????
    <filtering>true</filtering>
    ???????????
    </resource>
    ???????
    </resources>
    ???
    </build>
    ??? ...
    ???
    <profiles>
    ???????
    <profile>
    ???????????
    <id>production</id>
    ???????????
    <properties>
    ???????????????
    <jdbc.driverClassName>oracle.jdbc.driver.OracleDriver</jdbc.driverClassName>
    ???????????????
    <jdbc.url>jdbc:oracle:thin:@proddb01:1521:PROD</jdbc.url>
    ???????????????
    <jdbc.username>prod_user</jdbc.username>
    ???????????????
    <jdbc.password>s00p3rs3cr3t</jdbc.password>
    ???????????
    </properties>
    ???????
    </profile>
    ???
    </profiles>
    </project>
    2) 問: maven-svn-revision-number-plugin 插件說明

    答: maven-svn-revision-number-plugin 可以從 SVN 中獲取版本號,并將其變成環境變量,交由其他插件或者profile使用,詳細幫助在這里 。一般和resource的filter機制同時使用

    <plugins>
    ???
    <plugin>
    ???????
    <groupId>com.google.code.maven-svn-revision-number-plugin</groupId>
    ???????
    <artifactId>maven-svn-revision-number-plugin</artifactId>
    ???????
    <version>1.3</version>
    ???????
    <executions>
    ???????????
    <execution>
    ???????????????
    <goals>
    ???????????????????
    <goal>revision</goal>
    ???????????????
    </goals>
    ???????????
    </execution>
    ???????
    </executions>
    ???????
    <configuration>
    ???????????
    <entries>
    ???????????????
    <entry>
    ???????????????????
    <prefix>prefix</prefix>
    ???????????????
    </entry>
    ???????????
    </entries>
    ???????
    </configuration>
    ???
    </plugin>
    </plugins>

    這段代碼負責把resource文件中的內容替換成適當內容

    repository = ${prefix.repository}
    path
    = ${prefix.path}
    revision
    = ${prefix.revision}
    mixedRevisions
    = ${prefix.mixedRevisions}
    committedRevision
    = ${prefix.committedRevision}
    status
    = ${prefix.status}
    specialStatus
    = ${prefix.specialStatus}
    3)我的程序有些單元測試有錯誤,如何忽略測試步驟?

    有好幾種方法都可以實現跳過單元測試步驟,一種是給mvn增加命令行參數 -Dmaven.test.skip=true 或者 -DskipTests=true ;另外一種是給surefire插件增加參數,如下:

    <project>[...]<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>2.8</version><configuration><skipTests>true</skipTests></configuration></plugin></plugins></build>[...] </project>

    4) 如果只想運行單個測試用例,能否實現?

    可以,運行時候增加命令行參數 -Dtest=MyTest 即可,其中MyTest是所需要運行的單元測試用例名稱,但是不需要包含package部分。

    4.3 編譯

    1) 問:如何給插件指派參數?比如我要設置一些編譯參數

    答:以下內容設定編譯器編譯java1.5的代碼

    <project>
    ??? ...
    ???
    <build>
    ??????? ...
    ???????
    <plugins>
    ???????????
    <plugin>
    ???????????????
    <artifactId>maven-compiler-plugin</artifactId>
    ???????????????
    <configuration>
    ???????????????????
    <source>1.5</source>
    ???????????????????
    <target>1.5</target>
    ???????????????
    </configuration>
    ???????????
    </plugin>
    ???????
    </plugins>
    ??????? ...
    ???
    </build>
    ??? ...
    </project>

    要設置其他插件的參數也可以,請參考對應插件的幫助信息

    2) 問:我的目錄是非標準的目錄結構,如何設置讓maven支持?

    答:指定source目錄和test-source目錄即可。

    <build>
    ???
    <directory>target</directory>
    ???
    <sourceDirectory>src</sourceDirectory>
    ???
    <scriptSourceDirectory>js/scripts</scriptSourceDirectory>
    ???
    <testSourceDirectory>test</testSourceDirectory>
    ???
    <outputDirectory>bin</outputDirectory>
    ???
    <testOutputDirectory>bin</testOutputDirectory>
    </build>

    這個例子把源代碼設置成了src目錄,測試代碼在test目錄,所以輸出到bin目錄。這里要注意,directory如果也設置成bin目錄的話,maven打包的時候會引起死循環,因為directory是所有工作存放的地方,默認包含outputDirectory定義的目錄在內。

    3) 我源代碼是UTF8格式的,我如何在maven中指定?

    設置一個變量即可

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

    {color:blue}以上是官方給出的解決方案,但是經過嘗試這樣只能影響到resource處理時候的編碼{color},真正有用的是如下配置:

    {code:xml} <build>...<plugin><artifactId>maven-compiler-plugin</artifactId><configuration><encoding>UTF-8</encoding></configuration></plugin>... </build> {code}
    . 問:我的項目除了main/java目錄之外,還加了其他的c++目錄,想要一并編譯,如何做?

    答:使用native插件,具體配置方法參考[http://mojo.codehaus.org/maven-native/native-maven-plugin/]

    {code:xml} <plugin><groupId>org.codehaus.mojo</groupId><artifactId>native-maven-plugin</artifactId><extensions>true</extensions><configuration> </plugin> {code}
    . 問:我想要把工程的所有依賴的jar都一起打包,怎么辦?

    答:首先修改maven的配置文件,給maven-assembly-plugin增加一個jar-with-dependencies的描述。

    {code:xml} <project>[...]<build><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs></configuration></plugin></plugins></build>[...] </project> {code}

    然后使用命令打包即可:

    mvn assembly:assembly
    . 問:我想把main/scripts中的內容一起打包發布,如何做?

    答:在pom中配置額外的資源目錄。如果需要的話,還可以指定資源目錄的輸出位置

    {code:xml} <build>...<resources><resource><filtering>true</filtering><directory>src/main/command</directory><includes><include>run.bat</include><include>run.sh</include></includes><targetPath>/abc</targetPath></resource><resource><directory>src/main/scripts</directory></resource></resources>... </build> {code}
    . 問:我有多個源代碼目錄,但是maven只支持一個main src和一個test src,怎么辦?

    答:使用另外一個插件,并仿照如下配置pom

    {code:xml} <plugin><groupId>org.codehaus.mojo</groupId><artifactId>build-helper-maven-plugin</artifactId><version>1.1</version><executions><execution><id>add-source</id><phase>generate-sources</phase><goals><goal>add-source</goal></goals><configuration><sources><source>src/config/java</source><source>src/main/java</source><source>src/member/java</source></sources></configuration></execution></executions></plugin> {code}
    . 問:我的源代碼目錄中有一部分文件我不想讓maven編譯,怎么做?

    答:使用一個maven插件,然后使用includes和excludes。同理,也可以處理資源的過濾。

    {code:xml} <build><sourceDirectory>http://www.cnblogs.com/src/java</sourceDirectory><plugins><plugin><groupId>com.sun.enterprise</groupId><artifactId>hk2-maven-plugin</artifactId><configuration><includes><include>com/sun/logging/LogDomains.*</include><include>com/sun/enterprise/util/OS.java</include><include>com/sun/enterprise/util/io/FileUtils.java</include><include>com/sun/enterprise/util/zip/**</include><include>com/sun/enterprise/util/i18n/**</include><include>com/sun/enterprise/deployment/backend/IASDeploymentException.java</include></includes><excludes><exclude>com/sun/enterprise/config/ConfigBeansFactory.java</exclude><exclude>com/sun/enterprise/config/clientbeans/**</exclude></excludes></configuration></plugin></plugins><resources><resource><directory>http://www.cnblogs.com/src/java</directory><includes><include>**/*.properties</include></includes></resource></resources> </build> {code}
    . 問:我的項目是一個純的html組成的項目,沒有任何的java代碼,怎么跳過編譯過程?

    答:配置如下

    {code:xml} <build><sourceDirectory>src/java</sourceDirectory><plugins><plugin><groupId>com.sun.enterprise</groupId><artifactId>hk2-maven-plugin</artifactId></plugin></plugins> </build> {code}
    . 問:我的工程里用hibernate,想在編譯時候自動生成ddl,如何做?

    答:添加插件

    hibernate3-maven-plugin

    ,按照如下配置:

    {code:xml}<plugin><groupId>org.codehaus.mojo</groupId><artifactId>hibernate3-maven-plugin</artifactId><version>2.1</version><configuration><components><component><name>hbm2ddl</name><implementation>annotationconfiguration</implementation></component></components></configuration><dependencies><dependency><groupId>hsqldb</groupId><artifactId>hsqldb</artifactId><version>${hsqldb.version}</version></dependency></dependencies></plugin> {code}
    . 問:我能用maven支持eclipse RCP項目嗎?

    答:當然可以,你可以使用插件 Tycho,詳細內容可以參考這里[http://mattiasholmqvist.se/2010/02/building-with-tycho-part-1-osgi-bundles/].

    <plugin><groupid>org.sonatype.tycho</groupid><artifactid>target-platform-configuration</artifactid><version>0.7.0</version><configuration><resolver>p2</resolver></configuration> </plugin> 另外,老牌的pde-maven-plugin就不要用了,已經好幾年沒見更新了。

    4.4 ant互動

    1) 如何在maven編譯時候運行ant腳本?

    使用專門的antrun插件,并且在target標簽內部加入ant的代碼

    <plugin><artifactId>maven-antrun-plugin</artifactId><version>1.6</version><executions><execution><phase> <!-- 生命周期階段 --> </phase><configuration><target><!-- 加入target內部的代碼 --></target></configuration><goals><goal>run</goal></goals></execution></executions></plugin>

    2)如何在ant腳本中引用maven的classpath?

    maven給每一個依賴都生成了一個屬性,格式為"groupId:artifactId[:classifier]:type",比如,如果一下例子就顯示依賴的org.apache.common-util的jar文件路徑

    <echo message="Dependency JAR Path: ${org.apache:common-util:jar}"/>

    另外,maven還預定義了四個classpath的引用,他們是

    • maven.compile.classpath
    • maven.runtime.classpath
    • maven.test.classpath
    • maven.plugin.classpath

    3)如何使用antrun插件運行外部的build文件?

    很簡單,直接在antrun里邊使用ant指令即可,如下:

    <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-antrun-plugin</artifactId><version>1.6</version><executions><execution><id>compile</id><phase>compile</phase><configuration><target><!-- 同時傳遞內置的classpath給外部ant文件 --><property name="compile_classpath" refid="maven.compile.classpath"/><property name="runtime_classpath" refid="maven.runtime.classpath"/><property name="test_classpath" refid="maven.test.classpath"/><property name="plugin_classpath" refid="maven.plugin.classpath"/><ant antfile="${basedir}/build.xml"><target name="test"/></ant></target></configuration><goals><goal>run</goal></goals></execution></executions> </plugin>

    . 問:如何在ant中使用maven的功能?

    答:使用ant的[maven task|http://maven.apache.org/ant-tasks/index.html],不過只有ant 1.6以上和jdk 1.5環境才支持。

    h4. 測試相關

    . 問:如何忽略某個階段的結果?比如單元測試不一定要全正確

    答:給插件增加testFailureIgnore參數,并設置為false。如果要屏蔽該階段,則用

    <skip>true</skip> {code:xml} <project>[...]<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><testFailureIgnore>true</testFailureIgnore></configuration></plugin></plugins></build>[...] </project> {code}
    . 問:我如何在maven中加入PMD,CheckStyle,JDepend等檢查功能?

    答:加入PMD檢查,以下代碼如果在

    reporting

    節點中加入則在

    mvn site

    中執行,如果在

    build

    節點中加入,則在build的時候自動運行檢查。詳細配置參考[pmd插件使用說明|http://maven.apache.org/plugins/maven-pmd-plugin/]

    {code:xml}<plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-pmd-plugin</artifactId><version>2.5</version></plugin></plugins> {code}

    加入 checkstyle 檢查,詳細配置參考[checkstyle插件使用說明|http://maven.apache.org/plugins/maven-checkstyle-plugin/],同樣注意放置在reporting和build節點中的區別(所有報表類插件都要同樣注意):

    {code:xml}<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-checkstyle-plugin</artifactId><version>2.5</version></plugin> {code}

    加入 simian 的支持,simian是一個支持代碼相似度檢查的工具,目前有maven插件,也有checkstyle的插件。它不僅可以檢查java,甚至可以支持文本文件的檢查。詳細幫助信息參考[這里|http://www.redhillconsulting.com.au/products/simian/]。simian 的 maven插件在[這里|http://mojo.codehaus.org/simian-report-maven-plugin/introduction.html]

    {code:xml}<build><plugins><plugin><groupId>org.codehaus.mojo</groupId><artifactId>simian-maven-plugin</artifactId><version>1.6.1</version></plugin></plugins>...</build> {code}

    加入 jdepend 檢查,詳細配置參考[jdepend使用說明|http://mojo.codehaus.org/jdepend-maven-plugin/],

    {code:xml}<plugin><groupId>org.codehaus.mojo</groupId><artifactId>jdepend-maven-plugin</artifactId><version>2.0-beta-2</version></plugin> {code}

    加入 findbugz 檢查,詳細配置參考[findbugz使用說明|http://mojo.codehaus.org/findbugs-maven-plugin/usage.html],

    {code:xml}<plugin><groupId>org.codehaus.mojo</groupId><artifactId>findbugs-maven-plugin</artifactId><version>2.0.1</version></plugin> {code}

    加入javadoc生成,詳細配置參考[javadoc usage|http://maven.apache.org/plugins/maven-javadoc-plugin/usage.html]

    {code:xml}<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-javadoc-plugin</artifactId><version>2.7</version><configuration>...</configuration></plugin> {code}

    加入 jxr 支持,JXR是一個生成java代碼交叉引用和源代碼的html格式的工具,詳細配置信息參考[jxr usage|http://maven.apache.org/plugins/maven-jxr-plugin/]。注意,jxr沒有必要在build階段運行。

    {code:xml}<reporting><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jxr-plugin</artifactId><version>2.1</version></plugin></plugins></reporting> {code}

    加入 Cobertura 支持,它是一個代碼覆蓋率工具,可以用來評估具有相應測試的源代碼的比率。詳細幫助在[這里|http://mojo.codehaus.org/cobertura-maven-plugin/index.html]。另外一個功能相似的軟件是[EMMA|http://emma.sourceforge.net/samples.html],詳細的幫助在[這里|http://mojo.codehaus.org/emma-maven-plugin/usage.html]。兩個產品的比較文章在[這里|http://www.topcoder.com/tc?module=Static&d1=features&d2=030107],個人傾向于都要用,因為給出的指標不一樣,都有參考作用。

    {code:xml|title=Cobertura }<plugin><groupId>org.codehaus.mojo</groupId><artifactId>cobertura-maven-plugin</artifactId><version>2.4</version><configuration><check><branchRate>85</branchRate><lineRate>85</lineRate><haltOnFailure>true</haltOnFailure><totalBranchRate>85</totalBranchRate><totalLineRate>85</totalLineRate><packageLineRate>85</packageLineRate><packageBranchRate>85</packageBranchRate><regexes><regex><pattern>com.example.reallyimportant.*</pattern><branchRate>90</branchRate><lineRate>80</lineRate></regex><regex><pattern>com.example.boringcode.*</pattern><branchRate>40</branchRate><lineRate>30</lineRate></regex></regexes></check></configuration><executions><execution><goals><goal>clean</goal><goal>check</goal></goals></execution></executions></plugin> {code} {code:xml|title=EMMA}<reporting>...<plugins>...<plugin><groupId>org.codehaus.mojo</groupId><artifactId>emma-maven-plugin</artifactId><version>1.0-alpha-3-SNAPSHOT</version></plugin>...</plugins>...</reporting> {code}

    添加 javaNCSS 插件,它是一個java代碼的度量工具,詳細參考在[這里|http://mojo.codehaus.org/javancss-maven-plugin/]。

    {code:xml}<reporting><plugins><plugin><groupId>org.codehaus.mojo</groupId><artifactId>javancss-maven-plugin</artifactId><version>2.0-beta-2</version></plugin></plugins></reporting> {code}

    h4. profile相關

    . 問:profile能夠設置為某個變量不存在的條件下激活?

    答:使用!前綴,請看示例:

    {code:xml} <activation><property><name>!environment.type</name></property></activation> {code}

    h4. 部署相關

    . 問:其他部署到服務器的方式和配置怎么配?

    答:本文摘自 [http://blog.csdn.net/zyxnetxz/archive/2009/05/18/4199348.aspx]{panel} *Distribution Management* 用于配置分發管理,配置相應的產品發布信息,主要用于發布,在執行mvn deploy后表示要發布的位置 *# 配置到文件系統

    {code:xml} <distributionManagement><repository><id>proficio-repository<id><name>Proficio Repository<name><url>file://${basedir}/target/deploy<url><repository> <distributionManagement> {code}

    *# 使用ssh2配置

    {code:xml} <distributionManagement><repository><id>proficio-repository<id><name>Proficio Repository<name><url>scp://sshserver.yourcompany.com/deploy<url><repository> <distributionManagement> {code}

    *# 使用sftp配置

    {code:xml} <distributionManagement><repository><id>proficio-repositoryi<d><name>Proficio Repository<name><url>sftp://ftpserver.yourcompany.com/deploy<url><repository> <distributionManagement> {code}

    *# 使用外在的ssh配置編譯擴展用于指定使用wagon外在ssh提供,用于提供你的文件到相應的遠程服務器。

    {code:xml} <distributionManagement><repository><id>proficio-repository<id><name>Proficio Repository<name><url>scpexe://sshserver.yourcompany.com/deploy<url><repository> <distributionManagement> <build><extensions><extension><groupId>org.apache.maven.wagon<groupId><artifactId>wagon-ssh-external<artifactId><version>1.0-alpha-6<version><extension><extensions> <build> {code}

    *# 使用ftp配置

    {code:xml} <distributionManagement><repository><id>proficio-repository<id><name>Proficio Repository<name><url>ftp://ftpserver.yourcompany.com/deploy<url><repository> <distributionManagement> <build><extensions><extension><groupId>org.apache.maven.wagongroupId><artifactId>wagon-ftpartifactId><version>1.0-alpha-6version><extension><extensions> <build> {code}

    {panel} h4. 插件配置

    . 問:我用maven輸出site,如何設置輸出為utf8編碼?

    答: 配置site插件的編碼設置

    {code:xml} ...<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-site-plugin</artifactId><version>2.0-beta-6</version><configuration><outputEncoding>UTF-8</outputEncoding></configuration></plugin>... {code}
    . 問:

    答:

    總結

    以上是生活随笔為你收集整理的maven常见问题问答的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    久久er99热精品一区二区 | 成人av免费在线播放 | 超碰国产在线观看 | 超碰99人人| 欧美精选一区二区三区 | 欧美一二三区在线观看 | 九九导航| 爱情影院aqdy鲁丝片二区 | 日韩小视频网站 | 成人影视免费看 | 久久久亚洲精华液 | 久久精品亚洲一区二区三区观看模式 | 丝袜美腿在线播放 | 99在线观看免费视频精品观看 | 不卡的av电影在线观看 | 国产一级二级三级在线观看 | 国产首页 | 亚洲精品高清一区二区三区四区 | 日p视频| 综合国产在线 | 91视频高清完整版 | 97在线视频网站 | 欧美一二区视频 | 西西人体www444 | 婷婷日| 天天操综合网站 | 欧美射射射 | 中文av资源站 | 成人国产一区 | 美女国内精品自产拍在线播放 | 超碰97久久 | 99久久精品久久久久久动态片 | 亚洲成年人在线播放 | 超碰国产人人 | 国产综合视频在线观看 | 国产黄大片 | av在线等 | 97在线看片| 蜜桃视频在线视频 | 成人三级av | 精品国产理论片 | 97超碰在线免费观看 | 成人亚洲欧美 | 91av视屏| 亚洲欧美在线视频免费 | 91女人18片女毛片60分钟 | 午夜精品电影一区二区在线 | 国产精品免费在线视频 | 97免费在线观看视频 | 日韩av进入| 国产成人精品午夜在线播放 | 天天天天综合 | 久久成人综合视频 | 亚洲女欲精品久久久久久久18 | 国产精品一区二区免费看 | 亚洲欧洲国产视频 | 亚洲性少妇性猛交wwww乱大交 | 人人爱爱 | 一级全黄毛片 | 四虎在线免费观看视频 | 在线观看视频一区二区三区 | 三级黄色网址 | 免费日韩一区二区三区 | 日韩成年视频 | 在线播放av网址 | 国产艹b视频 | 日韩特黄av | 欧洲精品视频一区二区 | 亚洲一区欧美激情 | 国产精品热视频 | 超级碰视频 | 91精品国产九九九久久久亚洲 | 国产亚洲免费观看 | 国产精品一区二区白浆 | 国产99在线播放 | 日韩在线观看免费 | 一区二区三区在线免费 | 国产不卡一区二区视频 | 天天干夜夜夜操天 | 国产麻豆精品传媒av国产下载 | 亚洲综合色网站 | 一级性av | 久久国产系列 | 在线观看一二三区 | 国产精品高潮久久av | 亚洲国产精品成人va在线观看 | 日韩视频 一区 | 免费网站在线观看人 | 婷婷丁香九月 | 国产亚洲视频在线观看 | 在线亚洲天堂网 | 丁香导航| 国产免费一区二区三区网站免费 | 天天鲁一鲁摸一摸爽一爽 | 97超碰网| 美女黄视频免费 | 久久精品中文字幕少妇 | 亚洲最新视频在线播放 | 久久国产美女 | av免费电影在线观看 | 久久久久亚洲精品国产 | 国产精品色婷婷视频 | 五月天婷婷在线观看视频 | 日韩一区二区三区高清免费看看 | 久久亚洲热| 精品一区二区三区久久 | 欧美亚洲三级 | 在线激情小视频 | 美女网站黄在线观看 | 久久香蕉一区 | 国产午夜激情视频 | 91精品国产一区二区在线观看 | 在线播放视频一区 | 国产精品扒开做爽爽的视频 | 91在线欧美| 久久艹艹 | 国产日韩欧美在线观看 | www91在线观看 | 国产99久久久国产精品 | 国产视频首页 | 欧美另类tv | 色爱成人网 | 国产成人一区二区三区电影 | 欧美另类重口 | 六月丁香综合网 | 国产精品欧美久久久久无广告 | 插插插色综合 | 99中文字幕视频 | 九九久久在线看 | 2024av在线播放 | 国产精品毛片一区二区在线 | 超碰在线1 | 一级黄色片在线观看 | 97精品国产97久久久久久粉红 | 久久99久久99免费视频 | 夜夜干天天操 | 精品你懂的 | 天天草视频 | 在线中文字幕视频 | 欧美日韩一级视频 | 天天色草 | 午夜影视剧场 | 91精品欧美 | 亚洲黄色小说网 | 特级aaa毛片 | 天天射天天干天天操 | 国产一线在线 | 日本中文字幕一二区观 | 日韩美视频| 久草在线视频免费资源观看 | 国产伦精品一区二区三区免费 | 国产婷婷精品 | 国产成人一区二区三区在线观看 | 欧美在线91 | 久久久国产一区二区三区四区小说 | 大荫蒂欧美视频另类xxxx | 天天摸日日操 | 精品视频9999 | 国产一卡久久电影永久 | 日韩簧片在线观看 | 色噜噜色噜噜 | 欧美激情综合五月 | 久久精品久久久久 | 99久久er热在这里只有精品15 | 韩日在线一区 | 久草资源在线观看 | 日韩视频免费播放 | 狠狠色噜噜狠狠 | 99成人精品 | 韩日电影在线观看 | 国产美腿白丝袜足在线av | 九九色综合 | 在线亚洲播放 | 99视频| 免费观看不卡av | 午夜久久精品 | 日韩欧美精品一区二区 | av成人免费网站 | 91在线视频免费91 | 在线播放91 | 精品视频在线播放 | 久久久.com| 午夜影院在线观看18 | 人人爽夜夜爽 | 99色精品视频 | 日韩伦理片hd | 美女视频黄免费 | 日韩免费观看高清 | 91av小视频 | 黄色一级片视频 | 看片的网址 | 美国av片在线观看 | 黄色av三级在线 | 国产aaa免费视频 | 狠狠干狠狠艹 | 波多野结衣理论片 | 久久免费精品 | 91高清完整版在线观看 | 四虎影视成人 | 久草视频免费在线观看 | 欧美专区日韩专区 | 欧美激情xxxx | 日韩激情视频在线 | 成人午夜剧场在线观看 | 日韩中文久久 | 超碰在线亚洲 | 天天操月月操 | 亚洲一区精品人人爽人人躁 | 亚洲成色777777在线观看影院 | 久久久网 | 久久av免费 | 91亚洲精品乱码久久久久久蜜桃 | 丁香影院在线 | 天天天天射 | 日本二区三区在线 | 91av看片| 午夜精品福利在线 | 国产在线视频不卡 | 日韩视频一区二区三区在线播放免费观看 | 日本久久视频 | 久久精品男人的天堂 | 日本中文字幕影院 | 啪嗒啪嗒免费观看完整版 | 久久精品亚洲国产 | 综合色伊人 | 成人综合日日夜夜 | 日韩免费一区二区三区 | 亚洲尺码电影av久久 | 91大片网站 | 国产精品日韩欧美 | 欧美国产一区在线 | 久久免费99精品久久久久久 | 91成年人网站 | 久草线 | 国产成人一区二区三区久久精品 | 99精品偷拍视频一区二区三区 | 91视频久久久久 | 日韩高清在线一区二区三区 | 西西444www大胆无视频 | 欧美天天综合网 | 毛片一级免费一级 | 日韩欧美在线国产 | 超碰在线97免费 | av中文字幕免费在线观看 | 九九九九九九精品任你躁 | 久久伊人综合 | 亚洲四虎影院 | 日日操夜夜操狠狠操 | av 一区二区三区四区 | 99这里只有精品视频 | 国产精品第一页在线 | 99热在线网站 | 久久久久日本精品一区二区三区 | 三级毛片视频 | 久久久久免费精品视频 | 国产在线91精品 | 日韩av资源在线观看 | 美女性爽视频国产免费app | 午夜精品电影 | 国产精品久久一区二区三区不卡 | av在线播放快速免费阴 | 一区二区三区精品在线视频 | 国产一区网 | 色中文字幕在线观看 | 国产午夜剧场 | 天天se天天cao天天干 | 一区二区激情视频 | 天天射天天操天天色 | 国产精品久久久久999 | 婷婷色在线观看 | 国产高清视频在线播放 | 一级免费av | 一区二区三区精品在线视频 | 国产自产高清不卡 | 精品亚洲免a | 日日操操操 | 国产资源免费在线观看 | 一区二区久久久久 | 国产精品美女久久久网av | 国产69精品久久99不卡的观看体验 | 国产午夜一区二区 | 成人禁用看黄a在线 | 欧美精品xxx | www久久久 | 91桃色视频| 播五月综合 | 亚洲a网| 国产小视频免费在线观看 | 国产91勾搭技师精品 | 色999视频 | 深夜免费小视频 | 国产精品一区二区精品视频免费看 | 日韩专区在线 | 亚洲精品视频在线免费 | 精品美女视频 | 又黄又爽又刺激的视频 | 久久精品一级片 | 久久久影院官网 | 在线观看日本高清mv视频 | 色99之美女主播在线视频 | 96看片| 久久久精品日本 | 久久er99热精品一区二区三区 | 久久免费99精品久久久久久 | 色激情在线 | 国产精品 9999 | 色综合久久久久久中文网 | 日本护士三级少妇三级999 | 国产精品国产三级国产不产一地 | 日韩精品高清视频 | 欧美污污网站 | 国产香蕉视频在线播放 | 亚洲另类人人澡 | 国产福利在线免费 | 国产精品久久中文字幕 | 干干操操| 日韩高清三区 | 国产清纯在线 | 伊人五月天综合 | 欧美日韩在线观看一区二区三区 | 国产一区二区精品久久91 | 在线视频久 | 4438全国亚洲精品观看视频 | 日日夜夜网站 | 一本一道波多野毛片中文在线 | 国产成人三级三级三级97 | 亚洲黄色影院 | 人人插人人艹 | 一区二区三区精品久久久 | 国产99久久久精品 | 久久精品视频在线播放 | 亚洲精品人人 | 又色又爽又黄高潮的免费视频 | 成人国产精品电影 | caobi视频 | 久草视频资源 | 九草在线视频 | 91激情视频在线观看 | 亚洲精品久久视频 | 欧美一二三区播放 | 黄a在线看 | 久久五月婷婷丁香社区 | www日韩| 999久久久免费视频 午夜国产在线观看 | 国产盗摄精品一区二区 | 五月综合网站 | 久青草视频在线观看 | 99九九视频| 狠狠干婷婷色 | 天天插伊人 | 97碰碰视频 | 成人四虎影院 | 四虎国产精品成人免费影视 | 丁香婷婷综合激情五月色 | 激情视频二区 | 免费视频久久久久 | 日本黄区免费视频观看 | 国产精品久久久久久影院 | 在线一区观看 | 日韩高清免费电影 | 婷婷综合亚洲 | 欧美日韩首页 | 视频一区二区三区视频 | 天天做天天爱天天综合网 | 国产精品永久免费 | 精品国产一区二区三区在线观看 | 久久最新视频 | 色多视频在线观看 | 日韩伦理片一区二区三区 | 999亚洲国产996395 | 一区二区在线影院 | 色综合天天在线 | 狠狠88综合久久久久综合网 | 亚洲va天堂va欧美ⅴa在线 | 九九在线精品视频 | 亚洲精品国产自产拍在线观看 | 国产亚洲精品精品精品 | 天天天天干 | 免费亚洲片 | 亚洲日韩欧美一区二区在线 | 韩日精品在线观看 | 国产日韩在线视频 | 在线视频欧美日韩 | 成人一区二区在线观看 | 欧美精品在线一区 | 国产精品综合在线 | 亚洲精品字幕 | 99精品视频在线免费观看 | 最新影院 | 久久国产精品色av免费看 | 日韩在线观看的 | 国内久久久久 | 成人久久18免费网站麻豆 | 狠狠操狠狠干天天操 | 国产精品视频线看 | 欧美日韩精品在线观看视频 | 播五月综合 | 日韩欧美精品在线观看 | 日韩在线一二三区 | 国产无套精品久久久久久 | 久久精品国产亚洲精品 | 成人av中文字幕 | 91成人免费观看视频 | 国产三级午夜理伦三级 | 久久婷婷视频 | 婷婷丁香七月 | 国产高清福利在线 | 免费视频资源 | 国产一区视频在线观看免费 | 中国一级片在线 | 日韩网站在线看片你懂的 | 国产一区欧美日韩 | 69国产精品视频免费观看 | 国产中文字幕一区 | 婷婷色婷婷| 国产精品女人久久久久久 | 久草视频中文 | 一区二区三区高清在线观看 | 97视频人人 | 亚洲激情在线 | 成人久久18免费网站麻豆 | 最近免费在线观看 | 久草电影在线 | 92中文资源在线 | 国产二区视频在线观看 | 天天操夜夜看 | 97在线观看免费高清 | 久久婷婷国产色一区二区三区 | 特级xxxxx欧美 | 91自拍视频在线 | 九九九热精品免费视频观看 | 91粉色视频 | 久久亚洲热 | 韩日三级在线 | 亚洲国产精选 | 少妇自拍av | 麻豆免费观看视频 | 国产在线一区二区 | 91资源在线播放 | 日韩高清 一区 | 国内精品久久久 | 亚州国产精品视频 | 国产精品久久久久久久妇 | 有码视频在线观看 | 97视频在线免费播放 | 国产精品18久久久久久久 | 成人在线播放网站 | 久久久久免费精品国产小说色大师 | 成人黄色一级视频 | 亚洲好视频 | 久久精品久久久久 | 天天操天天操一操 | 欧美日韩另类在线观看 | 日韩精品一区二区三区视频播放 | 成人免费看片网址 | 一区二区三区四区五区在线 | 久久这里只有精品久久 | 国产精品夜夜夜一区二区三区尤 | 一区二区三区在线免费观看 | 激情导航 | 久久精品79国产精品 | 色综合久久久网 | 国产精品久久久久aaaa九色 | 国产一级性生活 | www.天天干.com | 国产精品久久久久久久久毛片 | 中文有码在线 | 伊人五月天.com | 久久精品毛片 | 美女视频黄免费 | 深夜福利视频一区二区 | 欧美一区二区在线免费观看 | 国产精品成人一区二区 | 在线成人免费电影 | 国产精品久久久久av福利动漫 | 91cn国产在线 | 精品国产自在精品国产精野外直播 | 91精品国产成人观看 | 亚洲最新av在线网站 | 久久国产露脸精品国产 | 999国内精品永久免费视频 | 久草在线视频精品 | 久久久久伦理电影 | 四川妇女搡bbbb搡bbbb搡 | 久久久久久久久久久高潮一区二区 | 国产精品自产拍在线观看网站 | 99亚洲国产 | 欧美日韩视频在线观看一区二区 | 久久99在线观看 | 色综合久久精品 | 日本乱码在线 | 狠狠搞,com| 中文字幕在线国产 | 精品久久九九 | 亚洲 欧洲av | 精品久久一区二区 | 国产精久久久久久妇女av | 精品一区二区三区四区在线 | 久久久激情网 | 成年人免费av网站 | 夜夜躁天天躁很躁波 | 色wwwww| 久草视频免费 | 天天插天天 | 三级动图| 久久久免费毛片 | 香蕉视频在线播放 | 国产一级免费视频 | 亚洲日本韩国一区二区 | 国产福利在线免费观看 | 夜夜天天干 | 亚洲天堂va | 五月婷婷中文网 | 日韩有码中文字幕在线 | 色综合中文综合网 | 91禁看片 | 91看片一区二区三区 | 亚洲免费小视频 | 亚洲在线网址 | 国产免费人人看 | 久久久久亚洲精品成人网小说 | 久久不卡av| 免费看污污视频的网站 | 国产高清av | 99草视频| av不卡在线看 | 国产在线视频一区二区三区 | 中文字幕在线免费观看视频 | 中文在线a∨在线 | 欧美一区免费在线观看 | 波多野结衣久久资源 | 色五丁香 | 在线观看免费成人av | 中文字幕字幕中文 | 99 精品 在线 | 91香蕉视频黄色 | 91精品在线免费视频 | 99久久99精品 | 久久99精品久久久久久久久久久久 | 亚洲精品综合久久 | 久久精品网站免费观看 | 麻豆国产在线视频 | 亚洲视频六区 | 91av视频免费观看 | 男女视频91 | 久久另类小说 | 久久免费视频网站 | 久久免费视频7 | 国产伦精品一区二区三区四区视频 | 国产不卡免费 | av成人在线观看 | 一级片免费视频 | 欧美日韩中文在线 | 欧美少妇影院 | 六月激情久久 | 四虎成人免费观看 | 91精品视频免费看 | 亚洲欧洲精品视频 | 亚洲a色 | 欧美黄色特级片 | 91亚洲精品在线 | 欧美精品生活片 | 亚洲国产日韩av | 免费在线播放 | 日日夜夜天天久久 | 一区二区三区四区在线 | 麻豆一二三精选视频 | 五月天久久激情 | 欧美精品在线观看一区 | 国产精品爽爽久久久久久蜜臀 | 亚洲最快最全在线视频 | 国产特级毛片aaaaaa | 一本一道久久a久久精品 | av千婊在线免费观看 | 亚洲综合情 | 91av资源在线 | 色视频在线免费 | 亚洲成人av电影 | 国产又黄又硬又爽 | 不卡av免费在线观看 | 亚洲天堂网在线视频观看 | 国产精品成人久久久 | 国产欧美精品一区二区三区四区 | 日韩亚洲国产精品 | 久久视频在线看 | 国产精品毛片久久久久久久久久99999999 | 黄色电影在线免费观看 | 一区精品在线 | 久久99最新地址 | 国产免费又爽又刺激在线观看 | 天天干,天天射,天天操,天天摸 | 成人欧美在线 | 天天爱天天干天天爽 | 日日操操 | 精品免费久久 | www.亚洲视频 | 四虎影视www | 国产麻豆精品免费视频 | 91精品国产福利在线观看 | 国产黄色在线看 | 精品99在线视频 | 免费日韩一区二区三区 | 国产精品亚洲片在线播放 | 狠狠操天天操 | 在线精品视频在线观看高清 | 日韩精品免费在线观看视频 | 久青草电影 | 国产精品69av | 精品中文字幕在线 | 性色av免费看 | 国产字幕在线播放 | 久草视频首页 | 久久精品牌麻豆国产大山 | 中文av免费| 国产精品一区二区在线免费观看 | 日韩久久精品一区二区 | 99精品99| 日韩欧美国产免费播放 | 国产韩国精品一区二区三区 | 中文字幕在线免费看线人 | 国产高清网站 | 色综合久久综合中文综合网 | 中文字幕在线观看三区 | 免费三级黄色 | 五月天色丁香 | 欧美成人69av | www.福利视频 | 久久久久久欧美二区电影网 | 婷婷精品国产欧美精品亚洲人人爽 | 久久成人国产精品一区二区 | 国产精品麻豆一区二区三区 | 国产成人在线免费观看 | 天堂入口网站 | 国内精品久久久久影院优 | 婷久久 | 亚洲少妇天堂 | 乱子伦av| 欧美精品久久久久久 | 精品福利片 | 国产男女爽爽爽免费视频 | 97精品国产97久久久久久春色 | 日韩免费在线网站 | 国产91在线免费视频 | 99草在线视频 | 激情婷婷网 | 韩国av免费观看 | 日韩欧美一区二区在线 | 久久久久免费网站 | 精品在线视频一区二区三区 | 成年人在线免费看视频 | 探花系列在线 | 日韩午夜大片 | 在线观看免费一级片 | 国产精品国产毛片 | 一区二区观看 | 日日干夜夜操视频 | 在线高清av| 免费亚洲黄色 | 国产精品av一区二区 | 欧美日韩网站 | 五月婷婷激情 | 99久久999久久久精玫瑰 | 久草爱 | 日韩av一区二区三区四区 | 亚洲精品免费在线视频 | 欧美有色 | 国产91精品看黄网站在线观看动漫 | 国产高清不卡 | 国产成人精品三级 | 2021久久| 日韩精品欧美精品 | 国产一级片在线播放 | 国产精品日韩精品 | 2017狠狠干 | 日本中文字幕观看 | 黄色亚洲免费 | 在线观看久草 | 亚洲六月丁香色婷婷综合久久 | 狠狠狠色丁香婷婷综合久久88 | 91热这里只有精品 | 欧美性色xo影院 | 99一区二区三区 | 国产成人精品电影久久久 | 国产视频二 | 国产精品免费大片视频 | 最近中文字幕国语免费av | 中文字幕电影一区 | 国产专区视频在线观看 | 婷婷5月激情5月 | 国产精品久久久久久久久久久不卡 | 中日韩在线视频 | 日本少妇视频 | 美女免费网视频 | 人成免费网站 | 狠狠色丁香久久综合网 | 91黄色成人 | 亚洲九九九在线观看 | 深爱五月网 | 亚洲国产精品人久久电影 | 国产精品美女视频网站 | 人人爱人人做人人爽 | 91精品网站在线观看 | 精品久久久久久亚洲综合网站 | 国产福利在线免费观看 | 国产精品999久久久 久产久精国产品 | 久久视频在线免费观看 | 九九视频网站 | 亚洲综合国产精品 | 欧美一级日韩三级 | 国产黄在线看 | 亚洲精品免费观看 | 日韩乱理 | 国产综合福利在线 | 最新黄色av网址 | www.xxx.性狂虐| 九九热免费在线观看 | 久久人人爽人人片 | 黄色日本片 | 国产系列精品av | 天天色天天操天天爽 | 人人狠狠| 伊人网站| 国产视频不卡一区 | 久久亚洲福利 | 久久视频精品在线观看 | 又色又爽又黄 | 一区二区精品视频 | 91禁在线观看 | 国产999免费视频 | 免费福利影院 | 日韩免费一区二区 | 国产xx在线 | 国产精品免费看久久久8精臀av | 久久久精品一区二区三区 | www.天天色| 丁香在线观看完整电影视频 | 免费av免费观看 | 国产视频精选在线 | 狠狠操天天射 | 免费观看www7722午夜电影 | 国产精品久久久久永久免费 | 成人四虎影院 | 国产蜜臀av | 99麻豆视频 | av在线永久免费观看 | 亚洲精品国产精品国自 | 国产一二区免费视频 | 欧美一区二视频在线免费观看 | 日本大尺码专区mv | 在线成人高清电影 | 999久久精品 | 黄色www免费| 欧美99精品 | 中文字幕在线成人 | 亚洲免费资源 | 中文字幕精品一区二区精品 | 色婷婷成人网 | 91麻豆网站| 视频在线观看99 | 天天色棕合合合合合合 | 免费午夜av | 久久精品综合一区 | 成人av资源站 | 亚洲欧美日韩在线看 | 麻豆91精品视频 | 日韩三级免费 | 在线视频精品播放 | 操操爽| 不卡av在线 | 国产原创av片 | 国产精品丝袜久久久久久久不卡 | 亚洲国产婷婷 | 视频国产精品 | 99精品免费久久久久久日本 | 成人毛片在线视频 | 亚洲国产人午在线一二区 | 成人在线视频一区 | 欧美日韩高清 | 成人h视频在线播放 | 国产黄色观看 | 亚洲一级性 | 亚洲精品毛片一级91精品 | 日韩欧美在线中文字幕 | 2022久久国产露脸精品国产 | 在线观看视频一区二区三区 | 99热在线国产精品 | av成人免费在线看 | 欧美久久久久久久久久 | 国产中文字幕在线观看 | 国产a国产| 五月天免费网站 | 国产精品久久久久久久久婷婷 | 日韩特黄av | 99久久婷婷国产一区二区三区 | 麻豆91在线观看 | 亚洲精品高清在线 | 男女全黄一级一级高潮免费看 | 天天色天天射综合网 | 国产精品一区二区中文字幕 | 伊人狠狠| 日韩黄色在线电影 | 高清视频一区 | av永久网址| 久久免费视频在线观看30 | 麻豆国产视频下载 | 精品日本视频 | 嫩草av在线 | 国色天香永久免费 | 美女视频黄网站 | 色婷婷综合视频在线观看 | 日韩欧美高清免费 | 最新一区二区三区 | 国产成人一区二区啪在线观看 | 午夜美女网站 | 日韩av电影中文字幕 | 国产999在线观看 | 国产盗摄精品一区二区 | 成人av免费在线看 | 一区二区视频在线观看免费 | 中文字幕免费在线看 | av一级片网站 | 久久av高清 | 一级免费看视频 | 天天操导航 | 91中文在线观看 | 91在线观看欧美日韩 | 手机在线中文字幕 | 久久人人爽人人爽人人片av免费 | 最近中文字幕免费视频 | 日韩久久精品一区二区 | 在线观看视频一区二区 | 亚洲精品高清在线 | 在线观看免费av片 | 国偷自产中文字幕亚洲手机在线 | 97色噜噜| 精品国产乱码久久久久久浪潮 | 天海翼一区二区三区免费 | 美女黄频 | 黄色三级久久 | 国产精品 国内视频 | 天天天天爱天天躁 | 精品欧美一区二区精品久久 | 国产成人精品一区二区三区免费 | 久久久影视 | 久久免费在线观看视频 | 日韩免费在线视频观看 | 日本中文字幕久久 | 综合网伊人 | 91久久久久久久一区二区 | 中文字幕4| 久久久福利视频 | 天天添夜夜操 | 久久激情电影 | 日韩免费高清在线 | 国产精品门事件 | 丰满少妇久久久 | 又黄又爽又刺激 | 九九热在线观看 | 色妞久久福利网 | 午夜国产在线观看 | 国产一二三区在线观看 | 国内外成人免费在线视频 | 五月激情在线 | 国产成人精品一区二区三区 | 91av电影在线 | 91成熟丰满女人少妇 | 99激情网| 午夜日b视频 | 人人看黄色 | 日韩av成人 | 国产精品 中文在线 | 免费看v片网站 | 中文字幕日韩高清 | 麻豆传媒在线免费看 | 日韩在线观看视频中文字幕 | 91在线小视频 | av免费黄色 | 日韩大陆欧美高清视频区 | 午夜视频在线观看一区二区三区 | 国产精品原创 | 亚洲首页 | av免费网站观看 | 正在播放 久久 | 国产精品美女久久久免费 | 欧美日韩视频一区二区三区 | 久久久精品成人 | 最新av观看| 免费网站观看www在线观看 | 国产视频首页 | av中文字幕在线免费观看 | 国产精品毛片一区二区 | 成人av午夜 | 黄色国产区 | 99精品视频在线看 | 久久久久久久久久久免费视频 | 日韩一二三在线 | 亚洲国产成人久久综合 | av在线官网 | 99精品一级欧美片免费播放 | 人人草在线视频 | 国产在线不卡一区 | 色婷婷福利视频 | 69av国产| 91大神dom调教在线观看 | 精品伦理一区二区三区 | 一区免费观看 | 99视频免费播放 | 亚洲成aⅴ人片久久青草影院 | 香蕉网址| 日韩欧美在线观看一区 | 国产在线观看黄 | 日韩精品久久久久久中文字幕8 | 国产精品1区2区在线观看 | 不卡的av电影在线观看 | 日韩激情中文字幕 | 九九精品视频在线看 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 国产午夜三级一区二区三桃花影视 | 欧美日韩精品在线一区二区 | 欧美福利视频一区 | 中文字幕第一页在线播放 | 视频精品一区二区三区 | 天天操天天爽天天干 | 亚洲日本va午夜在线影院 | 91在线免费看片 | 91精品国自产在线偷拍蜜桃 | 国产成人精品在线播放 | av黄色免费网站 | 去看片| 亚洲永久字幕 | av电影 一区二区 | 91香蕉视频 | 99亚洲天堂 | www.天天操.com | 欧美一级电影在线观看 | 精品久久久久久久久亚洲 | 免费h精品视频在线播放 | 狠狠躁日日躁狂躁夜夜躁av | 午夜精品久久久久久久99婷婷 | 国产系列 在线观看 | 国产成人精品一区二区在线 | 久久99爱视频| 久久福利精品 | 国产精品入口久久 | 久久久久久久久久久国产精品 | 免费高清看电视网站 | 欧美久久久久久 | 亚洲国产操 | 日韩黄在线观看 | 国产97在线观看 | 九九色视频 | 国产精品第10页 | 91私密视频 | 91精品国产高清 | 色综合婷婷 | 91麻豆精品国产91 | www178ccom视频在线 | 免费国产一区二区视频 | av丁香花| 亚洲1区在线 | 视频一区二区精品 | 黄视频网站大全 | 人人干人人干人人干 | 欧美在线视频精品 | av专区在线 | 国产一区二区不卡视频 | 99久久精品久久亚洲精品 | 天天干天天操天天搞 | 久久99国产一区二区三区 | 久久人操 | 欧美 激情在线 | 国产精品麻豆欧美日韩ww | 国产成a人亚洲精v品在线观看 | 久久九九影视网 | 九九爱免费视频在线观看 | 国产一区免费在线观看 | 天天操网站 | 中文字幕乱视频 | 国产精品视频线看 | 午夜少妇| 91看片在线播放 | 国产青草视频在线观看 | 国产第一页在线观看 | 波多野结衣亚洲一区二区 | 国产精品手机在线 | 美女精品网站 | 日韩免费网站 | 亚洲国内精品在线 | a黄色片在线观看 | 一区二区三区四区五区在线视频 | 黄色影院在线免费观看 | av高清影院| 国产黄在线免费观看 | 日韩av看片 | 91免费国产在线观看 | 永久黄网站色视频免费观看w | 中文字幕91视频 | 黄www在线观看 |