Maven

為什么要使用Maven

  1. 添加第三方jar包,使用Maven后,jar包沒必要復制到lib文件下了,只需要給一個坐標就行
  2. 解決jar包之間的依賴關系,Maven會自動將當前jar包依賴的包引入
  3. 處理jar包的沖突,Maven中內(nèi)置了兩條依賴原則:最短路徑者優(yōu)先和先聲明者優(yōu)先,防止出現(xiàn)jar包沖突
  4. 獲取第三方jar包,建立父工程
  5. 實現(xiàn)項目的分布式部署,多個模塊之間的依賴關系,

Maven是什么

一個自動化構(gòu)建工具

Maven的核心概念

  1. POM:項目對象模型。將Java工程的相關信息封裝為對象作為便于操作和管理的模型。Maven工程的核心配置??梢哉f學習Maven就是學習pom.xml文件中的配置。
  2. 約定的目錄結(jié)構(gòu):現(xiàn)在JavaEE開發(fā)領域普遍認同一個觀點:約定>配置>編碼。意思就是能用配置解決的問題就不編碼,能基于約定的就不進行配置。在idea中自己生成了其實
  3. 坐標
    使用如下三個向量在Maven的倉庫中唯一的確定一個Maven工程。
  • [1]groupId:公司或組織的域名倒序+當前項目名稱
  • [2]artifactId:當前項目的模塊名稱
  • [3]version:當前模塊的版本
  1. 依賴,當A jar包需要用到B jar包中的類時,我們就說A對B有依賴。例如:commons-fileupload-1.3.jar依賴于commons-io-2.0.1.jar。python到處是依賴
  • 依賴的范圍
    -- 只有依賴范圍時可以訪問
    -- 路徑最短者優(yōu)先,a-->b-->c ,b和c都依賴一個包的不同版本,此時最短路徑優(yōu)先
    -- 這里“聲明”的先后順序指的是dependency標簽配置的先后順序。
  1. compile:主程序,測試程序都可以
  2. test:在主程序中不能用
  3. provided: 主程序和測試程序都可以用,但是在服務器上有可以不被使用
  • 依賴的傳遞性
  1. 倉庫,本地倉庫和遠程倉庫
  2. 生命周期:
  3. 插件:具體任務由插件完成

繼承

解決非間接依賴的問題
創(chuàng)建父工程--》在子工程中引用父工程

// 父工程
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</dependencyManagement>
//子項目
<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>
</dependencies>

聚合

將多個工程拆分為模塊后,需要手動逐個安裝到倉庫后依賴才能夠生效。修改源碼后也需要逐個手動進行clean操作。而使用了聚合之后就可以批量進行Maven工程的安裝、清理工作。

<modules>
    <module>../Hello</module>
    <module>../HelloFriend</module>
    <module>../MakeFriends</module>
</modules>

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 前言 在Java項目開發(fā)中,項目的編譯、測試、打包等是比較繁瑣的,屬于重復勞動的工作,浪費人力和時間成本。以往開發(fā)...
    JourWon閱讀 1,177評論 0 1
  • 逅弈 轉(zhuǎn)載請注明原創(chuàng)出處,謝謝! 以前的日子 以前我們寫代碼時,jar包都默認放在一個叫 /lib 的目錄下,然后...
    逅弈閱讀 3,190評論 3 45
  • 1 為什么使用Maven這樣的構(gòu)建工具 【W(wǎng)hy】 1.1 一個項目就是一個工程 如果項目非常...
    coder_girl閱讀 522評論 0 1
  • 思想:今天晨會我為大家分享了明代王陽明的《教條示龍場諸生·立志》,現(xiàn)在也和同學們分享一下,原文是“志不立,如無舵之...
    超潮超哥閱讀 192評論 0 1
  • 今天我跳兔子舞跳的好老師給我們獎勵小紅花以后我會再接再厲的努力
    李淑潔閱讀 187評論 0 0

友情鏈接更多精彩內(nèi)容