maven規定的目錄

Maven規定的目錄結構

若要使用Maven,那麼項目的目錄結構必須符合Maven的規範css

 

,如寫一個使用Spring的Web項目就須要引入大量的jar包。一個項目Jar包的數量之多每每讓咱們瞠目結舌,而且Jar包之間的關係錯綜複雜,一個Jar包每每又會引用其餘Jar包,缺乏任何一個Jar包都會致使項目編譯失敗。java

 

Maven基本命令

  1. -v:查詢Maven版本spring

    本命令用於檢查maven是否安裝成功。apache

    Maven安裝完成以後,在命令行輸入mvn -v,若出現maven信息,則說明安裝成功。api

  2. compile:編譯ruby

    將java源文件編譯成class文件maven

  3. test:測試項目ide

    執行test目錄下的測試用例性能

  4. package:打包測試

    將項目打成jar包

  5. clean:刪除target文件夾

  6. install:安裝

    將當前項目放到Maven的本地倉庫中。供其餘項目使用

什麼是Maven倉庫?

Maven倉庫用來存放Maven管理的全部Jar包。分爲:本地倉庫 和 中央倉庫。

  • 本地倉庫 
    Maven本地的Jar包倉庫。
  • 中央倉庫 
    Maven官方提供的遠程倉庫。

當項目編譯時,Maven首先從本地倉庫中尋找項目所需的Jar包,若本地倉庫沒有,再到Maven的中央倉庫下載所需Jar包。

 

什麼是「座標」?

在Maven中,座標是Jar包的惟一標識,Maven經過座標在倉庫中找到項目所需的Jar包。

以下代碼中,groupId和artifactId構成了一個Jar包的座標。

<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.1.1</version> </dependency>
  • groupId:所需Jar包的項目名
  • artifactId:所需Jar包的模塊名
  • version:所需Jar包的版本號

傳遞依賴 與 排除依賴

  • 傳遞依賴:若是咱們的項目引用了一個Jar包,而該Jar包又引用了其餘Jar包,那麼在默認狀況下項目編譯時,Maven會把直接引用和簡潔引用的Jar包都下載到本地。
  • 排除依賴:若是咱們只想下載直接引用的Jar包,那麼須要在pom.xml中作以下配置:(將須要排除的Jar包的座標寫在中)
<exclusions> <exclusion> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </exclusion> </exclusions>


依賴衝突

若項目中多個Jar同時引用了相同的Jar時,會產生依賴衝突,但Maven採用了兩種避免衝突的策略,所以在Maven中是不存在依賴衝突的。

  • 短路優先
本項目——>A.jar——>B.jar——>X.jar 本項目——>C.jar——>X.jar

若本項目引用了A.jar,A.jar又引用了B.jar,B.jar又引用了X.jar,而且C.jar也引用了X.jar。

在此時,Maven只會引用引用路徑最短的Jar。

 

聚合

  1. 什麼是聚合?

    將多個項目同時運行就稱爲聚合。

  2. 如何實現聚合?

    只需在pom中做以下配置便可實現聚合:

<modules>
        <module>../模塊1</module> <module>../模塊2</module> <module>../模塊3</module> </modules>


繼承

  1. 什麼是繼承?

    在聚合多個項目時,若是這些被聚合的項目中須要引入相同的Jar,那麼能夠將這些Jar寫入父pom中,各個子項目繼承該pom便可。

    1. 如何實現繼承?

      • 父pom配置:將須要繼承的Jar包的座標放入標籤便可。
    <dependencyManagement> <dependencies> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.2.2</version> </dependency> </dependencies> </dependencyManagement>
    • 子pom配置:
    <parent> <groupId>父pom所在項目的groupId</groupId> <artifactId>父pom所在項目的artifactId</artifactId> <version>父pom所在項目的版本號</version> </parent>

 

使用Maven構建Web項目

 

  1. New Maven項目:選擇WebApp:

  2. 若使用JSP,需添加Servlet依賴:

    注:Servlet依賴只在編譯和測試時使用!

 

<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <!-- 只在編譯和測試時運行 --> <scope>provided</scope> </dependency>

10.

pom.xml詳解

pom.xml是Maven的核心,你的項目須要什麼Jar包就在pom.xml裏面配置。當編譯項目時Maven讀取該文件,並從倉庫中下載相應的Jar包。

11.maven 自動讀取pom文件,maven會自動查找和讀取pom文件

12.插件也是保存在倉庫裏的!是以maven座標的方式!插件也有maven 一樣的groupid和archifact id座標方式,

插件也是從倉庫去下載的!

 

<plugin> <!--插件在倉庫裏的group ID--> <groupId/> <!--插件在倉庫裏的artifact ID--> <artifactId/> <!--被使用的插件的版本(或版本範圍)--> <version/> <!--是否從該插件下載Maven擴展(例如打包和類型處理器),因爲性能緣由,只有在真須要下載時,該元素才被設置成enabled。--> <extensions/> <!--在構建生命週期中執行一組目標的配置。每一個目標可能有不一樣的配置。--> <executions> <!--execution元素包含了插件執行須要的信息--> <execution> <!--執行目標的標識符,用於標識構建過程當中的目標,或者匹配繼承過程當中須要合併的執行目標--> <id/> <!--綁定了目標的構建生命週期階段,若是省略,目標會被綁定到源數據裏配置的默認階段--> <phase/> <!--配置的執行目標--> <goals/> <!--配置是否被傳播到子POM--> <inherited/> <!--做爲DOM對象的配置--> <configuration/> </execution> </executions> <!--項目引入插件所須要的額外依賴--> <dependencies>
相關文章
相關標籤/搜索