Apache Maven

项目管理及自动构建工具

Apache Maven,是一個軟體(特別是Java軟體)專案管理自動構建工具,由Apache軟體基金會所提供。Maven也可被用於構建和管理各種專案,例如C#RubyScala和其他語言編寫的專案。Maven曾是Jakarta專案的子專案,現為由Apache軟體基金會主持的獨立Apache專案。

Apache Maven
開發者Apache軟體基金會
目前版本
  • 3.9.9(2024年8月18日;穩定版本)[1]
編輯維基數據鏈結
原始碼庫 編輯維基數據鏈結
程式語言Java
作業系統跨平台
類型構建自動化
許可協定Apache許可證 2.0
網站maven.apache.org(英文)
Maven中心倉庫中的組建數目呈指數級增長

Maven解決了軟體構建的兩方面問題:一是軟體是如何構建的,二是軟體的依賴關係。不同於Apache Ant等早期工具,Maven設定了構建流程的標準,在此之外只需要指定例外情況。XML檔案描述了正在構建的軟體專案、它對其他外部模組和組件的依賴關係、構建順序、目錄和所需的外掛程式。該檔案通常有預設的目標任務,例如代碼編譯和打包。Maven從一個或多個代碼倉庫(例如Maven 2 Central Repository)動態地下載Java庫與Maven外掛程式,並將其儲存在本地快取區中[2]

Maven是以基於外掛程式的架構構建的,這使其能夠使用任何能用標準輸入控制的應用程式。Maven 2同時維護了為C/C++準備的原生外掛程式[3]

儘管Gradlesbt等替代技術並不依賴於XML,但他們仍然保留了Maven引入的關鍵概念。Apache Ivy還開發了一個專用的依賴管理器,同時支援Maven倉庫[4]

Apache Maven也包括對可重現構建的支援[5][6]

範例

Maven專案使用專案對象模型(Project Object Model,POM)來組態。

專案對象模型儲存在名為 pom.xml 的檔案中。

以下是一個簡單的範例:

<project>
  <!-- model version is always 4.0.0 for Maven 2.x POMs -->
  <modelVersion>4.0.0</modelVersion>
  
  <!-- project coordinates, i.e. a group of values which
       uniquely identify this project -->
  
  <groupId>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0</version>

  <!-- library dependencies -->
  
  <dependencies>
    <dependency>
    
      <!-- coordinates of the required library -->
      
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      
      <!-- this dependency is only used for running and compiling tests -->
      
      <scope>test</scope>
      
    </dependency>
  </dependencies>
</project>

參見

補充閱讀

有免費的PDF供下載和線上閱讀:http://www.sonatype.com/documentation/books(頁面存檔備份,存於網際網路檔案館(英文)

參考資料

  1. ^ Release Notes - Maven - Version 3.9.9. 2024年8月18日 [2024年9月5日]. 
  2. ^ Index of /maven2/. [2009-04-15]. (原始內容存檔於2018-09-17). 
  3. ^ Laugstol, Trygve. MojoHaus Native Maven Plugin. [2022-07-26]. (原始內容存檔於2016-10-29). 
  4. ^ IBiblio Resolver | Apache Ivy™. [2022-07-26]. (原始內容存檔於2021-06-16). 
  5. ^ Reproducible/Verifiable Builds - Apache Maven - Apache Software Foundation. cwiki.apache.org. [2022-07-26]. (原始內容存檔於2022-07-26). 
  6. ^ Reproducible Builds in Java - DZone Java. dzone.com. [2022-07-26]. (原始內容存檔於2021-05-06). 

外部連結