Apache Maven

Apache Maven
開發者Apache软件基金会
当前版本
  • 3.9.6 (2023年12月1日;穩定版本)[1]
編輯維基數據鏈接
源代码库
  • github.com/apache/maven
編輯維基數據鏈接
编程语言Java
操作系统跨平台
类型构建自动化
许可协议Apache许可证 2.0
网站maven.apache.org(英文)
Maven中心仓库中的组建数目呈指数级增长

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]

尽管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>

参见

  • 自由软件主题
  • Apache Continuum英语Apache Continuum,一种与Maven紧密结合的持续集成服务器
  • Apache Jelly英语Apache Jelly一种将XML转为可执行代码的工具
  • Apache Ivy英语Apache Ivy,可作为替代的Java依赖管理工具
  • Gradle,一种基于约定优于配置的编译工具
  • Hudson
  • 构建自动化软件列表英语List of build automation software

补充阅读

  • Van Zyl, Jason, Maven:明确的指南 first, 奥莱利: 468, 2008-10-01 [2011-07-24], ISBN 0596517335, (原始内容存档于2010-08-27) (英文)
有免费的PDF供下载和在线阅读:http://www.sonatype.com/documentation/books(页面存档备份,存于互联网档案馆(英文)

參考資料

  1. ^ Release Notes – Maven 3.9.6. 
  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). 

外部链接

  • Maven项目官方网站(页面存档备份,存于互联网档案馆(英文)
  • Maven 2新手教程:Maven 2用户练习指南- 教程在 (页面存档备份,存于互联网档案馆(英文)
  • 完整参考(页面存档备份,存于互联网档案馆),一本已出版的并可免费在线阅读的书(英文)
  • 用Maven 2构建Web应用程序(英文)
  • Maven 2 POM揭秘(页面存档备份,存于互联网档案馆) - 文章在JavaWorld(英文)
  • 在你的POM中验证依赖(英文)
  • Maven的历史(页面存档备份,存于互联网档案馆(英文)
  • 用于PHP的Maven(页面存档备份,存于互联网档案馆(英文)
顶级项目
  • Abdera英语Apache Abdera
  • Accumulo英语Apache Accumulo
  • ActiveMQ
  • Ambari英语Apache Ambari
  • Ant
  • Aries英语Apache Aries
  • Apache Arrow
  • Apache HTTP Server
  • APR
  • Avro
  • Axis
  • Axis2
  • Beam
  • Bloodhound英语Apache Bloodhound
  • Apache Brooklyn英语Apache Brooklyn
  • Buildr英语Apache Buildr
  • Calcite英语Apache Calcite
  • Camel
  • Cassandra
  • Cayenne英语Apache Cayenne
  • Chemistry英语Apache Chemistry
  • CloudStack英语Apache CloudStack
  • Cocoon英语Apache Cocoon
  • Continuum英语Apache Continuum
  • Cordova
  • CouchDB
  • cTAKES英语cTAKES
  • CXF
  • Deltacloud英语Deltacloud
  • Derby
  • Directory英语Apache Directory Server
  • Drill英语Apache Drill
  • Empire-db英语Apache Empire-db
  • ECharts
  • Felix英语Apache Felix
  • Flex
  • Flink
  • Flume英语Apache Flume
  • Forrest英语Apache Forrest
  • Geronimo英语Apache Geronimo
  • Gora英语Apache Gora
  • Gump英语Apache Gump
  • Hadoop
  • Hama英语Apache Hama
  • HBase
  • Hive
  • Jackrabbit英语Apache Jackrabbit
  • James英语Apache James
  • JMeter英语Apache JMeter
  • Kafka
  • Karaf英语Apache Karaf
  • Kylin英语Apache Kylin
  • Lucene
  • Lenya英语Apache Lenya
  • Mahout英语Apache Mahout
  • Marmotta英语Apache Marmotta
  • Maven
  • MINA英语Apache MINA
  • mod_perl英语mod_perl
  • MyFaces英语Apache MyFaces
  • Nutch英语Apache Nutch
  • ODE英语Apache ODE
  • OFBiz英语Apache OFBiz
  • Oozie英语Oozie
  • OpenEJB英语Apache OpenEJB
  • OpenJPA英语Apache OpenJPA
  • OpenNLP
  • OpenOffice
  • PDFBox英语Apache PDFBox
  • Phoenix英语Apache Phoenix
  • POI
  • Pig英语Pig (programming tool)
  • Pivot英语Apache Pivot
  • Qpid英语Apache Qpid
  • River英语Apache River
  • Roller英语Apache Roller
  • RocketMQ
  • Samza英语Apache Samza
  • ServiceMix英语Apache ServiceMix
  • Shindig英语Apache Shindig
  • Shiro
  • Sling英语Apache Sling
  • Spark
  • Stanbol英语Apache Stanbol
  • Storm
  • SpamAssassin
  • Sqoop
  • Apache C++标准库英语stdcxx
  • Struts
  • Struts 2
  • Subversion
  • Tapestry
  • Thrift
  • Tiles英语Apache Tiles
  • Tika英语Apache Tika
  • Tomcat
  • Trafficserver
  • Turbine
  • Tuscany
  • UIMA
  • Velocity
  • Wave
  • Wicket
  • Wink英语Apache Wink
  • Xalan英语Xalan
  • Xerces英语Xerces
  • XMLBeans英语XMLBeans
  • ZooKeeper
ASF logo
Commons项目
  • Apache Commons Logging英语Apache Commons Logging
  • BCEL英语Byte Code Engineering Library
  • BSF英语Bean Scripting Framework
  • Commons Daemon英语Commons Daemon
  • Jelly英语Apache Jelly
Lucene项目
  • Lucene Java
  • Lucene.Net英语Lucene.Net
  • Nutch英语Nutch
  • Solr
Hadoop项目
其他项目
  • Batik
  • Chainsaw英语Chainsaw (log file viewer)
  • FOP
  • Log4j
  • XAP英语Apache XAP
  • Log4Net
  • Ivy英语Apache Ivy
孵化器项目
  • XAP英语Apache XAP
  • Samza英语Apache Samza
  • Storm
Apache Attic
  • AxKit英语AxKit
  • Beehive英语Apache Beehive
  • Click英语Apache Click
  • Apache BlueSky英语BlueSky Open Platform
  • Cactus英语Jakarta Cactus
  • Jakarta
  • Excalibur英语Apache Excalibur
  • Harmony
  • HiveMind英语Apache HiveMind
  • Lenya英语Apache Lenya
  • Slide英语Jakarta Slide
  • Shale英语Apache Shale
  • Shindig英语Apache Shindig
  • stdcxx英语Apache C++ Standard Library
  • iBATIS
  • XMLBeans英语XMLBeans
许可证标准
  • 分类 分类
  • 共享资源页面 维基共享