1. 程式人生 > >2019-01-Maven-小總結

2019-01-Maven-小總結

  • 什麼是Maven?
  • Maven的座標
    • groupId:所需Jar包的專案名
    • artifactId:所需Jar包的模組名
    • version:所需Jar包的版本號
  • Maven的結構
    • bin-命令
    • boot-類載入器框架
    • conf-配置
      • 區域性配置優先於全域性配置
        • 配置優先順序從高到低:pom.xml> user settings > global settings
          如果這些檔案同時存在,在應用配置時,會合並它們的內容,如果有重複的配置,優先順序高的配置會覆蓋優先順序低的。
    • lib-依賴包
      • maven-model-builder-3.6.0包中的pom檔案定義了約定。
  • pom.xml
    • groupId 組織機構
    • artfactId 功能命名
    • version 版本號
    • packaging 打包方式 預設jar
    • dependencyManagemement
      • 只能出現在父pom裡
      • 統一版本號
      • 宣告(子pom中用到再引用)
      • 最佳實踐
        • 父pom定義為企業級別或者部門級別控制依賴包版本
    • 其他介紹
  • 版本管理
    • a)1.0-SNAPSHOT
      i.repository 刪除
      ii.mvn clean package -U (強制拉一次)
    • b)1.0.0-RELAESE
      主版本號.次版本號.增量版本號-<里程碑版本>
  • 常用命令
    • compile
    • clean
    • test
    • package
    • install
    • deploy
    • -DskipTests #不執行測試用例,但編譯測試用例類生成相應的 class 檔案至 target/test-classes 下
    • -Dmaven.test.skip=true #不執行測試用例,也不編譯測試用例類
  • Dependency Scope
    • compile,預設值,適用於所有階段,會隨著專案一起釋出。
    • provided,類似compile,期望JDK、容器或使用者會提供這個依賴。如servlet.jar。
    • runtime,只在執行時使用,如JDBC驅動,適用執行和測試階段。
    • test,只在測試時使用,用於編譯和執行測試程式碼。不會隨專案釋出。
    • system,類似provided,需要顯式提供包含依賴的jar,Maven不會在Repository中查詢它。
  • 傳遞依賴和排除依賴
    • 傳遞依賴:如果我們的專案引用了一個Jar包,而該Jar包又引用了其他Jar包,那麼在預設情況下專案編譯時,Maven會把直接引用和間接引用的Jar包都下載到本地。
      • 如何檢視傳遞依賴:mvn dependency:tree > tree.text
    • 排除依賴:如果我們只想下載直接引用的Jar包,那麼需要在pom.xml中做以下配置
  • Maven預設的依賴處理策略是什麼?
    • 最短路徑優先
      Maven 面對 D1 和 D2 時,會預設選擇最短路徑的那個 jar 包,即 D2。E->F->D2 比 A->B->C->D1 路徑短 1。
    • 最先宣告優先
      如果路徑一樣的話, A->B->C1, E->F->C2 ,兩個依賴路徑長度都是 2,那麼就選擇最先宣告。
  • IDEA中使用Maven Helper處理jar包衝突
  • Maven常用外掛
  • 相關資料:《Maven實戰》