日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

maven入門:依賴 聚合 繼承(一)

 quasiceo 2018-08-04
2017年06月20日 16:06:18

目錄

maven的安裝不在這里講了,網(wǎng)上教程一大堆。

需要注意的:

(1).安裝完maven后建議更改本地倉(cāng)庫的位置,在conf->setting.xml中修改

<localRepository></localRepository>
  • 1

(2).maven的默認(rèn)遠(yuǎn)程倉(cāng)庫位置在lib目錄下的maven-model-builder.jar的pom-4.0.0.xml中的

<repositories>
    <repository>
        <url>http://repo.maven./maven2</url>
    </repository>
</repositories>
  • 1
  • 2
  • 3
  • 4
  • 5

6月22日補(bǔ)充:這篇博客沒有寫如何具體創(chuàng)建maven父子工程,其實(shí)我本人也到網(wǎng)上看過很多創(chuàng)建父子工程的博客,大同小異但是有些許不同,觀察比較細(xì)的同學(xué)會(huì)發(fā)現(xiàn)有些文章比如idea是先創(chuàng)建空項(xiàng)目還是先創(chuàng)建maven工程但是不選擇骨架。比如eclipse子項(xiàng)目是創(chuàng)建maven project還是必須創(chuàng)建maven module。重點(diǎn)不在于你用哪種方式創(chuàng)建,重點(diǎn)是創(chuàng)建出來的項(xiàng)目要符合maven規(guī)范,如父項(xiàng)目package值為POM(哪怕你創(chuàng)建時(shí)候選錯(cuò)了都可以自行到pom.xml中手動(dòng)改,甚至你可以手動(dòng)創(chuàng)建項(xiàng)目的目錄結(jié)構(gòu),目錄結(jié)構(gòu)你足夠熟悉就好。)

1.maven常用命令:

  • 打包:mvn package (打包后放入target中)
  • 編譯:mvn compile(會(huì)生成target目錄,并把編譯后的class放在classes中)
  • 清空:mvn clean (清空target)
  • 測(cè)試:mvn test (測(cè)試報(bào)告生成后存在target中,一般是三個(gè)文件)
  • 安裝: mvn install (將項(xiàng)目安裝到本地倉(cāng)庫中)
  • 發(fā)布: mvn deploy (發(fā)不到私服)

2.maven依賴

(1).依賴是具有傳遞性的.
(2).依賴傳遞原則:層級(jí)相同時(shí)按引入順序傳遞,層級(jí)不同時(shí)按層級(jí)最短的傳遞
舉個(gè)栗子:
A->B->C->X(1.0)
A->D->X(2.0)
由于只能引入一個(gè)版本的包,此時(shí)Maven按照最短路徑選擇導(dǎo)入x(2.0)
A->B->X(1.0)
A->D->X(2.0)
路徑長(zhǎng)度一致,則優(yōu)先選擇第一個(gè),此時(shí)導(dǎo)入x(1.0)

還有resources也是可以傳遞的,當(dāng)然resources中的文件不涉及層級(jí)問題,所以resources是按照dependency順序引入的。當(dāng)然如果本項(xiàng)目中能匹配到的話優(yōu)先選擇本項(xiàng)目中的。

(3).scope標(biāo)簽的值會(huì)影響依賴,這里暫時(shí)先不展開了.
(4).排除依賴可以用

<exclusions>
     <exclusion>
           <groupId>commons-logging</groupId>
           <artifactId>commons-logging</artifactId>
      </exclusion>
</exclusions>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

3.聚合

建立一個(gè)簡(jiǎn)單項(xiàng)目artifactId為user-parent
這里寫圖片描述

  <modules>
      <module>../user-service</module>
      <module>../user-core</module>
      <module>../user-log</module>
  </modules>
  • 1
  • 2
  • 3
  • 4
  • 5

實(shí)現(xiàn)對(duì)三個(gè)項(xiàng)目的聚合,module標(biāo)簽中是其他項(xiàng)目的路徑.這樣所有項(xiàng)目都在通過操作父項(xiàng)目操作來實(shí)現(xiàn)了.
注意:modules的順序是不重要的,因?yàn)閙aven會(huì)自動(dòng)根據(jù)依賴關(guān)系來拓?fù)渑判?

4.繼承

子項(xiàng)目中添加:

  <parent>
      <groupId>cn.milo.user</groupId>
      <artifactId>user-parent</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <!-- 這里是要指到pom文件的 -->
      <relativePath>../user-parent/pom.xml</relativePath> 
  </parent>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

6月22日補(bǔ)充:這里講一下relativePath標(biāo)簽,如果不寫這個(gè)標(biāo)簽,子項(xiàng)目會(huì)默認(rèn)在子項(xiàng)目pom.xml的父目錄中查找pom.xml,沒有找到的話會(huì)依次到本地倉(cāng)庫,遠(yuǎn)程倉(cāng)庫中找對(duì)應(yīng)的父項(xiàng)目并找到對(duì)應(yīng)的pom.xml.所以協(xié)同開發(fā)的話父項(xiàng)目要先deploy到私有倉(cāng)庫.私有倉(cāng)庫用法參照 : maven入門:nexus安裝與使用(二)

父項(xiàng)目中添加依賴管理:

 <!-- 依賴管理 -->
  <dependencyManagement>
      <dependencies>
          <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.1</version>
        </dependency>
      </dependencies>
  </dependencyManagement>
  父項(xiàng)目中添加依賴管理:
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

如上配置后子項(xiàng)目添加父項(xiàng)目中的jar包就不需要寫version標(biāo)簽了

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多