Apache Maven
![本頁使用了標題或全文手工轉換](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![]() | |
開發者 | Apache軟件基金會 |
---|---|
當前版本 |
|
源代碼庫 | |
編程語言 | Java |
操作系統 | 跨平台 |
類型 | 構建自動化 |
許可協議 | Apache許可證 2.0 |
網站 | maven |
![](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/4/40/Maven_repository_artifact_growth.png/220px-Maven_repository_artifact_growth.png)
Apache Maven,是一個軟件(特別是Java軟件)項目管理及自動構建工具,由Apache軟件基金會所提供。Maven也可被用於構建和管理各種項目,例如C#,Ruby,Scala和其他語言編寫的項目。Maven曾是Jakarta項目的子項目,現為由Apache軟件基金會主持的獨立Apache項目。
Maven解決了軟件構建的兩方面問題:一是軟件是如何構建的,二是軟件的依賴關係。不同於Apache Ant等早期工具,Maven設定了構建流程的標準,在此之外只需要指定例外情況。XML文件描述了正在構建的軟件項目、它對其他外部模塊和組件的依賴關係、構建順序、目錄和所需的插件。該文件通常有預設的目標任務,例如代碼編譯和打包。Maven從一個或多個代碼倉庫(例如Maven 2 Central Repository)動態地下載Java庫與Maven插件,並將其存儲在本地緩存區中[2]。
Maven是以基於插件的架構構建的,這使其能夠使用任何能用標準輸入控制的應用程序。Maven 2同時維護了為C/C++準備的原生插件[3]。
儘管Gradle和sbt等替代技術並不依賴於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>
參見
- Apache Continuum,一種與Maven緊密結合的持續集成服務器
- Apache Jelly一種將XML轉為可執行代碼的工具
- Apache Ivy,可作為替代的Java依賴管理工具
- Gradle,一種基於約定優於配置的編譯工具
- Hudson
- 構建自動化軟件列表
補充閱讀
- Van Zyl, Jason, Maven:明确的指南 first, 奧萊利: 468, 2008-10-01 [2011-07-24], ISBN 0596517335, (原始內容存檔於2010-08-27)(英文)
- 有免費的PDF供下載和在線閱讀:http://www.sonatype.com/documentation/books(頁面存檔備份,存於網際網路檔案館) (英文)
參考資料
- ^ Release 3.9.8. 2024年6月19日 [2024年7月14日].
- ^ Index of /maven2/. [2009-04-15]. (原始內容存檔於2018-09-17).
- ^ Laugstol, Trygve. MojoHaus Native Maven Plugin. [2022-07-26]. (原始內容存檔於2016-10-29).
- ^ IBiblio Resolver | Apache Ivy™. [2022-07-26]. (原始內容存檔於2021-06-16).
- ^ Reproducible/Verifiable Builds - Apache Maven - Apache Software Foundation. cwiki.apache.org. [2022-07-26]. (原始內容存檔於2022-07-26).
- ^ Reproducible Builds in Java - DZone Java. dzone.com. [2022-07-26]. (原始內容存檔於2021-05-06).
外部連結
- Maven項目官方網站(頁面存檔備份,存於網際網路檔案館)(英文)
- Maven 2新手教程:Maven 2用戶練習指南- 教程在 (頁面存檔備份,存於網際網路檔案館)(英文)
- 完整參考(頁面存檔備份,存於網際網路檔案館),一本已出版的並可免費在線閱讀的書(英文)
- 用Maven 2構建Web應用程序(英文)
- Maven 2 POM揭秘(頁面存檔備份,存於網際網路檔案館) - 文章在JavaWorld(英文)
- 在你的POM中驗證依賴(英文)
- Maven的歷史(頁面存檔備份,存於網際網路檔案館)(英文)
- 用於PHP的Maven(頁面存檔備份,存於網際網路檔案館)(英文)