Maven詳解(非原創(chuàng))

文章大綱

一五督、maven功能介紹
二、maven整合javaweb案例
三蛔翅、私服應(yīng)用(了解)
四、總結(jié)
五位谋、相關(guān)資料下載
六山析、參考文章

一、maven功能介紹

1. maven基本介紹

??Maven的Apache公司開源項目掏父,是項目構(gòu)建工具笋轨。用來依賴管理。
1.1 maven的好處
使用傳統(tǒng)項目開發(fā)crm項目赊淑,項目大芯粽:

同樣的項目使用maven開發(fā)

同樣的代碼,實現(xiàn)功能都一樣陶缺,maven項目如何做到的钾挟?可以初步推斷maven項目中一定沒有jar包。沒有jar包的maven項目如何運行饱岸?
Maven項目找jar包過程:

1.2 maven的好處

maven的兩大核心:
依賴管理:對jar包管理過程
項目構(gòu)建:項目在編碼完成后掺出,對項目進行編譯、測試苫费、打包汤锨、部署等一系列的操作都通過命令來實現(xiàn)

通過maven命令將web項目發(fā)布到tomcat:

溫馨提示:使用myeclipse或者IDEA時,maven命令無需出現(xiàn)mvn百框,直接tomcat:run即可闲礼。

1.3 Maven工程的分類
打包方式
常見:jar、war铐维、pom

Jar包
編譯完成柬泽,打包
會打成一個JAR包,用作jar包使用

war包
是一個Web工程
發(fā)布在服務(wù)器上的工程方椎,比如聂抢,網(wǎng)站或服務(wù)

將來我們會將所有的JAR包,打到一起
打到一個war包里面棠众,可以部署到Tomcat上

Pom
聚合工程
一般都是父工程琳疏,管理jar包的版本有决、maven插件的版本、統(tǒng)一的依賴管理

Pom工程中空盼,至少要有一個war包

2. maven安裝书幕、配置本地倉庫

maven程序安裝前提:maven程序java開發(fā),它的運行依賴jdk揽趾。

2.1 maven的下載安裝

下載安裝包

解壓到本地磁盤(解壓目錄不要有中文台汇,空格)

配置環(huán)境變量,Jdk環(huán)境變量:JAVA_HOME

將maven_home環(huán)境變量配置到path環(huán)境變量中

查詢maven的版本信息:

2.2 配置本地倉庫

本地倉庫是指jar包存放的文件夾

2.3 maven配置中央倉庫,阿里云倉庫地址
??使用maven自帶的中央倉庫地址很慢篱瞎,所以我們可以改成國內(nèi)的地址苟呐,比如阿里云,jar包下載到本地倉庫的速度就會快很多俐筋,具體配置如下:
??打開maven安裝目錄conf下的settings.xml文件牵素,大概在145行找到<mirrors>下添加以下代碼:

 <mirror>
      <id>maven.net.cn</id>
      <mirrorOf>central</mirrorOf>
      <name>central mirror in china</name>
      <url>http://maven.net.cn/content/groups/public</url>

    </mirror> 

3. maven項目標準目錄結(jié)構(gòu)

對項目中文件進行細分:

4. maven的常用命令(熟練掌握)

4.1 clean:清理
??將項目根目錄下target目錄清理掉。

4.2 compile:編譯
??將項目中.java文件編譯為.class文件

4.3 test:單元測試
??單元測試類名有要求:XxxxTest.java
??將項目根目錄下src/test/java目錄下的單元測試類都會執(zhí)行澄者。

4.4 package:打包
??web project ---- war包
??java project -----jar包
??將項目打包笆呆,打包項目根目錄下taget目錄

4.5 install:安裝
??解決本地多個項目公用一個jar包。
??打包到本地倉庫

4.6 溫馨提示
??使用myeclipse或者IDEA時粱挡,maven命令無需出現(xiàn)mvn赠幕,直接tomcat:run即可。

5 . 依賴范圍(了解)

??依賴范圍:默認是compile
??如果將servlet-api.jar設(shè)置為compile,打包后包含serlvet-api.jar询筏,war包部署到tomcat跟tomcat中存在servlet-api.jar包沖突榕堰。導(dǎo)致運行失敗。
??如果使用到tomcat自帶jar包屈留,將項目中依賴作用范圍設(shè)置為:provided,其他可以默認

6. 傳遞依賴沖突解決(掌握)

6.1 依賴傳遞規(guī)則介紹
??傳遞依賴:A(項目)依賴B斤富,B依賴C(1.1版本)强法,B是A的直接依賴既棺,C就是A的傳遞依賴
導(dǎo)入依賴D冒窍,D依賴C(1.2版本)

6.2 Maven自己調(diào)解原則

第一聲明者優(yōu)先原則
??誰先定義的就用誰的傳遞依賴。

路徑近者優(yōu)先原則
??直接依賴級別高于傳遞依賴勇蝙。

6.3 排除依賴

方法一:


方法二:版本鎖定(推薦使用)

二沫勿、maven整合javaweb案例

1. maven整合web項目案例(熟練掌握)

1.1 配置eclipse中maven環(huán)境
??配置m2e插件,Mars2版本自帶maven插件
??需要配置maven程序

配置userSetting:讓eclipse知道m(xù)aven倉庫位置

1.2 創(chuàng)建maven的javaweb項目

創(chuàng)建好的web項目味混,可能出現(xiàn)以下錯誤:
(1)web.xml缺失

(2)jdk編譯版本1.5产雹,在pom.xml中添加插件

(3)創(chuàng)建servlet,serlvet編譯報錯,原因:缺失servlet-api-xx.jar包

1.3 maven命令運行項目

2. maven對項目進行拆分翁锡、聚合(熟練掌握)

2.1 拆分蔓挖、聚合基本介紹
??對現(xiàn)在已有maven ssh項目進行拆分,拆分思路:將dao層的代碼已經(jīng)配置文件全體提取出來到一個表現(xiàn)上獨立的工程中馆衔。同樣service瘟判、action拆分怨绣。
??ssh-parent: 父工程
??ssh-dao:(子模塊)
??ssh-service
??ssh-web
??拆分完成對拆分后的項目進行聚合,提出概念父工程

2.2 創(chuàng)建父工程

創(chuàng)建好父工程目錄結(jié)構(gòu):只有pom.xml拷获,可以推斷父工程不進行編碼篮撑。
(1)項目需要的依賴的信息,在父工程中定義匆瓜,子模塊繼承過程
(2)將各個子模塊聚合到一起

2.3 將創(chuàng)建父工程發(fā)布到本地倉庫
??將父工程發(fā)布到本地倉庫后赢笨,其他的字工程才能繼承使用

2.4 創(chuàng)建子模塊ssh-dao
溫馨提示:子模塊需要右鍵父項目新建Module。
ssh-dao負責數(shù)據(jù)訪問層:包含dao相關(guān)代碼&配置文件

創(chuàng)建之后驮吱,將ssh-dao發(fā)布到本地倉庫茧妒,給2.5的ssh-service進行依賴

2.5 創(chuàng)建子模塊ssh-service

將ssh-service工程打包到本地倉庫,給2.6的ssh-web項目添加依賴

2.6 創(chuàng)建子模塊ssh-web:war

在ssh-web項目中添加service工程依賴左冬。

2.7 運行方式
??Maven方式:
??方式1:運行父工程嘶伟。父工程將各個子模塊聚合到一起。將ssh-web打war包發(fā)布到tomcat
??方式2:直接運行web工程

??其他方式:部署到tomcat

三又碌、私服應(yīng)用(了解)

1. 私服安裝

下載安裝包

解壓到本地磁盤

使用管理員權(quán)限打開dos,在dos下執(zhí)行命令安裝私服

啟動服務(wù)

找到私服的訪問url

2. 私服倉庫類型

Hosted:宿主倉庫
存放本公司開發(fā)的jar包(正式版本、測試版本绊袋、第三方:存在版權(quán)問題--Oracle)
Proxy:代理倉庫
代理中央倉庫毕匀、Apache下測試版本的jar包
Group:組倉庫
將來連接組倉庫。包含Hosted:宿主倉庫癌别,Proxy:代理倉庫

3. 上傳jar包到私服上(應(yīng)用)

在maven目錄下conf/settings.xml.認證:配置用戶名密碼

<server>
      <id>releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
    <server>
      <id>snapshots</id>
  <username>admin</username>
      <password>admin123</password>
    </server>

在將要上傳的項目的pom.xml中配置jar包上傳路徑url

<distributionManagement>
    <repository>
        <id>releases</id>
    <url>http://localhost:8081/nexus/content/repositories/releases/</url>
    </repository> 
    <snapshotRepository>
        <id>snapshots</id>
    <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
    </snapshotRepository> 
  </distributionManagement>

執(zhí)行命令發(fā)布項目到私服(上傳)

4. 下載jar包到本地倉庫(應(yīng)用)

在maven目錄下conf/settings.xml皂岔。配置模板

<profile>   
    <!--profile的id-->
   <id>dev</id>   
    <repositories>   
      <repository>  
    <!--倉庫id,repositories可以配置多個倉庫展姐,保證id不重復(fù)-->
        <id>nexus</id>   
        <!--倉庫地址躁垛,即nexus倉庫組的地址-->
        <url>http://localhost:8081/nexus/content/groups/public/</url>   
        <!--是否下載releases構(gòu)件-->
        <releases>   
          <enabled>true</enabled>   
        </releases>   
        <!--是否下載snapshots構(gòu)件-->
        <snapshots>   
          <enabled>true</enabled>   
        </snapshots>   
      </repository>   
    </repositories>  
     <pluginRepositories>  
        <!-- 插件倉庫,maven的運行依賴插件圾笨,也需要從私服下載插件 -->
        <pluginRepository>  
            <!-- 插件倉庫的id不允許重復(fù)教馆,如果重復(fù)后邊配置會覆蓋前邊 -->
            <id>public</id>  
            <name>Public Repositories</name>  
            <url>http://localhost:8081/nexus/content/groups/public/</url>  
        </pluginRepository>  
    </pluginRepositories>  
  </profile>  

激活模板

<activeProfiles>
    <activeProfile>dev</activeProfile>
  </activeProfiles>

四、總結(jié)

Maven好處包括以下幾點
1擂达、不再拷貝jar包土铺。項目不需要存放jar包。導(dǎo)致項目源代碼小
2板鬓、使用maven開發(fā)的工程,如果環(huán)境統(tǒng)一導(dǎo)入別的maven的項目不會報錯
3悲敷、代碼耦合度進一步降低.
4、方便項目進行升級
5俭令、節(jié)省人力成本

五后德、相關(guān)資料下載

鏈接:https://pan.baidu.com/s/1UUCps9Be3n8ZwGOXmVjfgw
提取碼:s15f

六、參考文章

http://yun.itheima.com/course/234.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抄腔,一起剝皮案震驚了整個濱河市瓢湃,隨后出現(xiàn)的幾起案子理张,更是在濱河造成了極大的恐慌,老刑警劉巖箱季,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涯穷,死亡現(xiàn)場離奇詭異,居然都是意外死亡藏雏,警方通過查閱死者的電腦和手機拷况,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掘殴,“玉大人赚瘦,你說我怎么就攤上這事∽嗾” “怎么了起意?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長病瞳。 經(jīng)常有香客問我揽咕,道長,這世上最難降的妖魔是什么套菜? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任亲善,我火速辦了婚禮,結(jié)果婚禮上逗柴,老公的妹妹穿的比我還像新娘蛹头。我一直安慰自己,他們只是感情好戏溺,可當我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布渣蜗。 她就那樣靜靜地躺著,像睡著了一般旷祸。 火紅的嫁衣襯著肌膚如雪耕拷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天托享,我揣著相機與錄音斑胜,去河邊找鬼。 笑死嫌吠,一個胖子當著我的面吹牛止潘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辫诅,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼凭戴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了炕矮?” 一聲冷哼從身側(cè)響起么夫,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤者冤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后档痪,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涉枫,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年腐螟,在試婚紗的時候發(fā)現(xiàn)自己被綠了愿汰。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡乐纸,死狀恐怖衬廷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情汽绢,我是刑警寧澤吗跋,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站宁昭,受9級特大地震影響跌宛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜积仗,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一秩冈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧斥扛,春花似錦、人聲如沸丹锹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽楣黍。三九已至匾灶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間租漂,已是汗流浹背阶女。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留哩治,地道東北人秃踩。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像业筏,于是被迫代替她去往敵國和親憔杨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,566評論 2 349