菜雞說maven

2020-08-08 12:18:17

maven

什麼是maven

​ 簡而言之,maven是一個跨平臺的專案管理工具,基於專案物件模型(POM),使用Java語言開發的。使用一小段描述資訊,來管理專案的構建,報告和文件的生成等等。

爲什麼是maven

​ 多人合作開發軟體,保證所有的依賴jar包能夠統一版本,避免每天向伺服器部署一次,簡化這個工作,所以使用更規範統一自動化的管理方法。

目錄結構

​ 約定優於設定的思想
maven目录结构

生命週期

預設生命週期包含以下階段

  • validate -驗證專案是否正確以及是否有所有必要的資訊
  • compile -編譯專案的原始碼
  • test-使用合適的單元測試框架測試編譯後的原始碼。這些測試不應要求將程式碼打包或部署
  • package -獲取編譯後的程式碼,並將其打包爲可分發的格式,例如JAR。
  • verify -對整合測試的結果進行任何檢查,以確保符合品質標準
  • install -將軟體包安裝到本地儲存庫中,以作爲本地其他專案中的依賴項
  • deploy -在構建環境中完成後,將最終軟體包複製到遠端儲存庫中,以便與其他開發人員和專案共用。

座標

​ group Id,artifact Id,version可以定位一個唯一確定的jar包,被稱爲maven座標。

<dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

scope 指依賴範圍:

  • compile:預設範圍,對編譯,測試和執行都有效,例如 log4j
  • test :測試依賴,只對測試有效,例如 junit
  • provided:已提供依賴,對編譯,測試有效,對執行無效,例如servlet-api
  • runtime:執行時依賴,例如jdbc驅動

依賴傳遞

​ 只有編譯時和執行時依賴是傳遞的

​ A->B->C


​ A->B->C(0.2)

​ A->C(0.1)

​ 最短路徑原則: C(0.1)


​ A->B->C(0.2)

​ A->D->C(0.1)

​ 優先宣告原則:C(0.2)

依賴排除

  <exclusions>
      <exclusion>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-core</artifactId>
      </exclusion>
    </exclusions>

倉庫

​ 本地倉庫是用來儲存 Maven 下載的 jar 包等檔案, 預設在 C 盤使用者目錄下的

/.m2/repository中, 此目錄使用過程中會越來越大, 建議更換到其它磁碟目錄下

	設定Maven的本地倉庫。

在Maven的安裝目錄下的conf目錄下找到settings.xml檔案,開啓該檔案,修改
   maven本地仓库地址

​ 新增阿裡

	 <mirror>
		 <id>alimaven</id> 
		 <name>aliyun maven</name> 
		 <url>http://maven.aliyun.com/nexus/content/groups/public/</url> 
		<mirrorOf>central</mirrorOf> 
	 </mirror>

常用命令

​ Maven build :自己設定執行目標

​ Maven clean:清除上一次Maven執行的結果

​ Maven generate-sources:自動程式碼生成

​ Maven install:將專案打包並部署到本地倉庫

​ Maven test:執行專案的單元測試