maven

1.為何需要maven

確定框架之后,會去對應官網(wǎng)下載對應的jar,有可能出現(xiàn)以下問題
  • jar包沖突
  • jar臃腫(會下載很多相關(guān)jar,無法確認哪一些無用)
  • 如何進行高效的測試
maven就可以解決以上問題


2.maven是什么

管理項目的構(gòu)建,報告,文檔的軟件項目管理工具,基于POM(project object Model)項目對象模型


3.maven環(huán)境變量搭建

  • 下載http://maven.apache.org/download.cgi
  • 這里使用 Binary zip archive 3.5.2
  • 解壓
  • 根據(jù)版本,有對java環(huán)境的要求
  • 環(huán)境變量添加M2_HOME: (F:\hadoop\apache-maven-3.5.2)
  • 將M2_HOME添加到path末尾中%M2_HOME%\bin
  • 驗證,cmd中輸入命令mvn -v



4.maven解壓目錄

  • bin:包含了maven運行腳本
  • boot:類加載框架,maven使用此加載自己類庫
  • conf:配置文件信息
  • lib:包含maven運行時所需的java類庫


5.maven 目錄結(jié)構(gòu)

mvn help:system ->
打印出所有的系統(tǒng)屬性和環(huán)境變量

maven創(chuàng)建的java項目常用的目錄結(jié)構(gòu)簡單介紹:
src
   --main
    --java
     --package
    --resource
   --test
    --java
     --package
    --resource
pom.xml

main/java項目源代碼所在目錄
main/resources項目資源文件所在目錄
test/java測試目錄
test/resource 測試相關(guān)資源文件目錄
pom.xml項目工程的描述文件

6.maven hello world

  • 創(chuàng)建文件夾F:\hadoop\maven01\src\main\java\com\zhang\maven\helloworld
  • 新建Helloworld.java
package com.zhang.maven.helloworld;
public class HelloWorld{
    public String sayHello(){
     return "hello maven";
    }
}
  • 新建測試文件,文件目錄一定要對
  • 新建F:\hadoop\maven01\src\test\java\com\zhang\maven\helloworld\HelloworldTest.java
  • 代碼中的包名需要一致
package com.zhang.maven.helloworld;
import org.junit.*;

public class HelloWorldTest{
    public void testHello(){
        Assert.assertEquals("hello maven",new HelloWorld().sayHello());
    }
}
  • pom文件進行描述,與src同目錄,一般看官網(wǎng)提供
  • 在maven的lib中解壓jar查看xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project>
<!--指定當前pom版本-->
  <modelVersion>4.0.0</modelVersion>
  
  <!--項目包名:公司地址名稱反寫+項目名稱-->
  <groupId>com.zhang.maven</groupId>
  
  <!--項目模塊名稱:一般為  項目名-模塊名-->
  <artifactId>maven-demo1</artifactId>
  
  <!--
   第一個數(shù)字:   大版本號
   第二個數(shù)字:   分支版本號
   第三個數(shù)字:   小版本號
   
   SNAPSHOT:快照
   Release: 發(fā)布版本
   Alpha: 內(nèi)部測試版本
   GA;正式發(fā)布版本
  -->
  <version>1.0.0SNAPSHOT</version>
</project>
  • 進入到項目pom當前目錄編譯下




7.常用命令

  • mvn -v 或mvn -version 驗證環(huán)境變量
  • mvn help:system :打印出所有的系統(tǒng)屬性和環(huán)境變量
  • mvn compile : 編譯項目源碼,不包括測試代碼,會產(chǎn)生Target文件
  • mvn test:測試
  • 錯誤原因: junit沒有依賴,在pom.xml中添加<dependencies>
  <!--
  在maven 中,任何一個依賴,插件以及項目構(gòu)建輸出都是通過坐標唯一標示
  maven中的坐標
    1.groupId
    2.artifactId
    3.version
    4.packaging
    5.classifer
  -->
  <dependencies>
     <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>4.12</version>
     </dependency>
  </dependencies>
  • 然后編譯mvn test
  • mvn test -compile編譯+測試
  • mvn clean 刪除target文件

8.maven默認下載地址

mvn compile會去下載所依賴的jar包
https://repo.maven.apache.org/maven2/junit/junit/xxx
地址是在


F:\hadoop\apache-maven-3.5.2\lib\maven-model-builder-3.5.2\org\apache\maven\model\pom-4.0.0.xml中的
<url>https://repo.maven.apache.org/maven2</url>

 <repositories>
    <repository>
      <id>central</id>
      <!--倉庫名稱-->
      <name>Central Repository</name>
      <!--鏈接地址-->
      <url>https://repo.maven.apache.org/maven2</url>
      <!--默認路徑-->
      <layout>default</layout>
      <!--禁止下載-->
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>
maven提供的中央倉庫,下載流程

1.本地倉庫查找是否有對應的jar
2.沒有就去默認maven倉庫下載

本地倉庫

配置F:\hadoop\apache-maven-3.5.2\conf\setting.xml

maven鏡像倉庫:
maven的中央遠程倉庫是在國外,進行屏蔽,因此國內(nèi)的將下載的jar提供給大家下載
需要在settings.xml中的mirror標簽中進行配置
url改成配置鏡像地址

 <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
</mirror>

NOTE:
maven settings.xml 不要去修改maven安裝目錄下的conf/settings.xml(全局),建議拷貝到對應的本地倉庫目錄下面
(C:\Users\zhanghua.m2\settings.xml)


7.常用命令

分模塊編寫
新建一個maven02 helloMaven,然后maven02要引用maven01的helloWorld

package com.zhang.maven.hellomaven;

//引用helloworld
import com.zhang.maven.helloworld.HelloWorld;
public class HelloMaven{
    
    public String sayMaven(){
     return new HelloWorld().sayHello();
    }
    
}

解決方法
1.將引用的jar添加到本地倉庫( mvn install)

2.將jar包的依賴添加到pom.xml
3.如何查看本地倉庫
根據(jù)坐標
groupId+artifactId

  <!--項目包名:公司地址名稱反寫+項目名稱-->
  <groupId>com.zhang.maven</groupId>
  
  <!--項目模塊名稱:一般為  項目名-模塊名-->
  <artifactId>maven-demo1</artifactId>

在本地倉庫中找到了

三命令聯(lián)合mvn clean compile install

9.生成maven骨架結(jié)構(gòu),使用插件archetype

mvn archetype:generate

生成的目錄
一次生成
F:\hadoop\maven04>
mvn archetype:generate -DgroupId=com.zhang.maven04 -DartifactId=maven-demo04 -Dversion=1.0-SHNAPSHOT -Dpackage=com.zhang.maven04

archetype大概有

1.simple start
2.webapp
3.quickstart
4.Groovy basic
這里使用IDEA進行編碼,創(chuàng)建項目



10.maven依賴范圍:

三種classPath: 編譯 ,測試,運行
http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope
例如
compile :編譯依賴,三種范圍都支持
test:測試依賴范圍有效,編譯,運行范圍無效,例如junit
provided : 對編譯,測試有效,運行時無效,例如serlvet api
runtime:運行時依賴,對測試和運行,編譯代碼無效,例如JDBC
system:系統(tǒng)依賴


11.maven生命周期

1.clean生命周期
2.default生命周期
3.site生命周期
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市刽宪,隨后出現(xiàn)的幾起案子函筋,更是在濱河造成了極大的恐慌,老刑警劉巖娇哆,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件馋艺,死亡現(xiàn)場離奇詭異嚎卫,居然都是意外死亡嘉栓,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門拓诸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來侵佃,“玉大人,你說我怎么就攤上這事奠支〔霰玻” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵倍谜,是天一觀的道長迈螟。 經(jīng)常有香客問我,道長尔崔,這世上最難降的妖魔是什么答毫? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮季春,結(jié)果婚禮上洗搂,老公的妹妹穿的比我還像新娘。我一直安慰自己载弄,他們只是感情好耘拇,可當我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宇攻,像睡著了一般驼鞭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尺碰,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天,我揣著相機與錄音,去河邊找鬼亲桥。 笑死洛心,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的题篷。 我是一名探鬼主播词身,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼番枚!你這毒婦竟也來了法严?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤葫笼,失蹤者是張志新(化名)和其女友劉穎深啤,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體路星,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡溯街,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了洋丐。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呈昔。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖友绝,靈堂內(nèi)的尸體忽然破棺而出堤尾,到底是詐尸還是另有隱情,我是刑警寧澤迁客,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布郭宝,位于F島的核電站,受9級特大地震影響哲泊,放射性物質(zhì)發(fā)生泄漏剩蟀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一切威、第九天 我趴在偏房一處隱蔽的房頂上張望育特。 院中可真熱鬧,春花似錦先朦、人聲如沸缰冤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棉浸。三九已至,卻和暖如春刺彩,著一層夾襖步出監(jiān)牢的瞬間迷郑,已是汗流浹背枝恋。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留嗡害,地道東北人焚碌。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像霸妹,于是被迫代替她去往敵國和親十电。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,652評論 2 354

推薦閱讀更多精彩內(nèi)容