Maven的介紹及使用


一、Maven簡介

  Maven 是一個項目管理工具,可以對 Java 項目進行構建、依賴管理,是一個自動化構建工具。

  自動化構建工具:將原材料(javajscsshtml....->產品(可發布項目)

  編譯-打包-部署-測試  ->  自動構建

Maven的作用:

1、管理jar

  1. 增加第三方jar包(不需要自己下載jar包)
  2. 管理jar包之間的依賴關系(maven自動關聯下載所有依賴的jar包)

2、將項目拆分成若干個模塊:借助於Maven可以將一個項目拆分成多個工程。(例如愛洋蔥)

 

Maven能干的事情:

  清理:刪除編譯的結果,為重新編譯做准備。

  編譯:java->class

  測試:針對於項目中的關鍵點進行測試,也可用項目中的測試代碼去測試開發代碼

  報告:將測試結果進行顯示

  打包:將項目中包含的多個文件壓縮成一個文件,用於安裝或部署(java項目打成一個jar包,web項目打成一個war包,父工程-pom

  安裝:將打成的包,放到本地倉庫,供其他項目使用。

  部署:將打成的包,放到服務器上,准備運行。

 

  Eclipse中的項目,要在Tomcat中運行,需要部署:

  a、通過eclipseadd and remove按鈕進行部署

  b、Web項目打成一個war包,然后將該war包復制到Tomcat/webapps中即可

 

  通常下載一個jar包,先在本地倉庫中下載,如果本地倉庫中不存在,則再聯網到中央倉庫(鏡像)去下載。

 

約定配置:

  Maven 提倡使用一個共同的標准目錄結構,Maven 使用約定優於配置的原則,大家盡可能的遵守這樣的目錄結構。如下所示:

   

二、Maven POM

  POM(項目對象模型) Maven 工程的基本工作單元,是一個XML文件,包含了項目的基本信息,用於描述項目如何構建,聲明項目依賴,等等。執行任務或目標時,Maven 會在當前目錄中查找 POM。它讀取 POM,獲取所需的配置信息,然后執行目標。POM 中可以指定以下配置:

  項目依賴

  插件

  執行目標

  項目構建profile

  項目版本

  項目開發者列表

  相關郵件列表信息

  在創建 POM 之前,我們首先需要描述項目組 (groupId), 項目的唯一ID

 

所有 POM 文件都需要 project 元素和三個必需字段:groupIdartifactIdversion

通過groupIdartifactIdversion可以在本地倉庫唯一標識一個模塊。

 

三、依賴

  A中的某些類,需要使用B中的某些類,則稱為A依賴B

  在maven項目中,如果要使用一個當時不存在的jar或模塊,則可以通過依賴實現(去本地倉庫、遠程倉庫去尋找)

1、依賴的范圍、依賴的有效性

Compile(默認)  test  provided

 

2、依賴排除

 

3、依賴的傳遞性

A.jar->B.jar->C.jar

要使A.jar->C.jar:當且僅當 B.jar依賴於C.jar的范圍是compile

多個maven項目(模塊)之間如何依賴:p項目<-q項目

  1. p項目install到本地倉庫
  2. q項目依賴,在pom.xml中放入p項目的坐標:
1 <dependency>
2 
3     <groupId>aa.test</groupId>
4 
5     <artifactId>HelloWorld</artifactId>
6 
7     <version>0.0.1-SNAPSHOT</version>
8 
9 </dependency>

4、依賴原則

a、最短路徑優先原則

b、路徑長度相同:

i、在同一個pom.xml文件中有2個相同的依賴,則后面的依賴會覆蓋前面的 依賴(嚴禁使用本情況)

ii、如果是不同的pom.xml中有2個相同的依賴,則先聲明的依賴會覆蓋后 聲明的依賴

 

eclipsejdk的版本:

maven的安裝目錄中,打開setting.xml,在<profiles>節點下,加入以下代碼:

 1 <profile>
 2 
 3    <id>jdk-1.8</id>
 4 
 5    <activation>
 6 
 7    <activeByDefault>true</activeByDefault>
 8 
 9    <jdk>1.8</jdk>
10 
11    </activation>
12 
13    <properties>
14 
15    <maven.compiler.source>1.8</maven.compiler.source>
16 
17    <maven.compiler.target>1.8</maven.compiler.target>
18 
19       
20  <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
21 
22    </properties>
23 
24 </profile>

然后再在eclipse中創建maven工程時,jdk就是1.8的了。

 

pom.xml文件中的依賴的版本:

  首先在根節點中插入<properties></properties>節點,然后在這個節點里,添加類似這樣的版本號信息:

  <spring.version>4.1.5.RELEASE</spring.version>

  <lucene.version>3.6.2</lucene.version>

  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>(這個是文件的編碼)

  然后在依賴中,寫成以下形式(類似於EL表達式):

1 <dependency>
2 
3     <groupId>org.springframework</groupId>
4 
5     <artifactId>spring-context</artifactId>
6 
7     <version>${spring.version}</version>
8 
9 </dependency>

 

四、命令

  執行mvn命令:必須在pom.xml所在目錄執行

  Maven常見命令:

  mvn compile --只編譯main目錄中的java文件

  mvn test  測試,運行的是test/java中的代碼

  mvn package 打成 jar/war包,放在項目的target文件夾中

  mvn install 將開發的模塊放入本地倉庫,供其他模塊使用(放入的位置,是通過gav決定)

  mvn clean 刪除target目錄(刪除編譯文件目錄)

  mvn deploy 將項目部署到Tomcat中,然后即可運行。

eclipse中創建maven工程:

1、配置maven

配置maven版本(不用自帶的,用自己安裝的)

配置本地倉庫:設置settings.xml

 

如果執行package命令,則依次執行resourcescompiletestpackage命令。

Maven生命周期:

生命周期中的順序:a b c d e

當我們執行c命令,則實際執行的是a b c

 

生命周期包含的階段:3個階段

clean 生命周期:清理

pre-clean clean post-clean

default  生命周期:默認

site 生命周期:站點

pre-site site post-site site-deploy

 

五、繼承

使用繼承,可以通過父工程,統一管理依賴的版本。

1、創建父工程:父工程的打包方式為pom

2、在父工程的pom.xml中編寫依賴:

1 <dependencyManagement>
2     <dependencies>
3     <dependency>
4     ......
5     </dependency>
6     </dependencies>
7 </dependencyManagement>

3、在子工程中加入父工程的gav(寫在<parent/>標簽中)。

4、在子工程的pom.xml中寫入<relativePath>../B/pom.xml</relativePath>(子工程pom相對於父工程pom的相對路徑)

5、在子工程中需要聲明:使用父工程的哪些依賴:

<dependency>

    <groupId>..</groupId>

    <artifactId>..</artifactId>

</dependency>(只需要ga,不需要v了)

六、聚合

Maven2項目依賴於maven1項目,則在執行時,必須先將maven1加入到本地倉庫中(install),之后才能執行maven2

以上前置工程(maven1)的install操作,可以交由“聚合”一次性搞定。

 

聚合的使用:

在一個總工程中配置聚合:(聚合的配置,只能配置在打包方式為pomMaven工程中)

1   <!-- 配置聚合,避免前置工程的install操作 -->
2 
3   <modules>
4 
5        <module>../Maven1</module>
6 
7        <module>../Maven2</module>
8 
9   </modules>

配置完聚合之后,以后只要操作總工程,則會自動操作總工程中配置過的工程。(只要install了總工程,則子工程都會install

七、部署

正常部署:

  首先將mavenweb項目打包(打成war包,結果在項目根目錄的target文件夾里),然后將war包復制到tomcatwebapps文件夾中,啟動tomcat即可運行。

Maven部署:

1、配置cargo

pom.xml中加入以下內容:

 1 <build>
 2 
 3        <finalName>MyWebProject</finalName><!-- 工程名 -->
 4 
 5        <plugins>
 6 
 7            <plugin>
 8 
 9            <groupId>org.codehaus.cargo</groupId><!-- 啟動tomcat -->
10 
11            <artifactId>cargo-maven2-plugin</artifactId>
12 
13            <version>1.4.9</version>
14 
15            <configuration>
16 
17            <container>
18 
19                <containerId>tomcat8x</containerId>
20 
21                <home>E:\Tomcat 9\apache-tomcat-9.0.14</home>
22 
23            </container>
24 
25        <configuration>
26 
27    <type>existing</type>
28 
29    <home>E:\Tomcat 9\apache-tomcat-9.0.14</home>
30 
31    <!-- 默認8080 -->
32 
33 <!--    <properties> -->
34 
35 <!--    <cargo.servlet.port>8888</cargo.servlet.port> -->
36 
37 <!--    </properties> -->
38 
39    </configuration>
40 
41    </configuration>
42 
43    <executions>
44 
45    <execution>
46 
47    <id>cargo-run</id>
48 
49    <phase>install</phase>
50 
51    <goals>
52 
53    <goal>run</goal>
54 
55    </goals>
56 
57    </execution>
58 
59    </executions>
60 
61    </plugin>
62 
63    </plugins>
64 
65   </build>                                                

2、Maven命令:deploy

然后run as->maven build...->deploy,然后打開瀏覽器,輸入localhost:8080/項目名稱/,即可運行。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM