Maven介绍

Maven的简介

Maven【[ˈmevən]】这个词可以翻译为"专家","内⾏"。作为Apache组织中的⼀个颇为成功的开源项 ⽬,Maven主要服务于基于java平台的项⽬构建,依赖管理和项⽬信息管理。 ⽆论是⼩型的开源类库项⽬,还是⼤型的企业级应⽤; ⽆论是传统的瀑布式开发,还是流⾏的敏捷开发, Maven都能⼤显身⼿。

项⽬构建

不管你是否意识到,构建(build)是每⼀位程序员每天都在做的⼯作。早上来到公司,我们做的第⼀ 件事就是从源码库签出最新的代码,然后进⾏单元测试,如果测试失败,会找相关的同事⼀起调试,修 复错误代码。接着回到⾃⼰的⼯作上来,编写⾃⼰的单元测试及产品代码。 仔细总结⼀下,我们会发现,除了编写源代码,我们每天有相当⼀部分时间花在了编译,运⾏单元测 试,⽣成⽂档,打包和部署等繁琐且不起眼的⼯作上,这就是构建。 如果我们现在还⼿⼯这样做,那成本 也太⾼了,于是有⼈⽤软件的⽅法让这⼀系列⼯作完全⾃动化,使得软件的构建可以像全⾃动流⽔线 ⼀样,只需要⼀条简单的命令,所有繁琐的步骤都能够⾃动完成,很快就能得到最终结果。

项⽬构建⼯具

Ant构建

最早的构建⼯具,基于IDE, ⼤概是2000年有的,当时是最流⾏java构建⼯具,不过它的XML脚本编写 格式让XML⽂件特别⼤。对⼯程构建过程中的过程控制特别好。

Maven【JAVA】

项⽬对象模型,通过其描述信息来管理项⽬的构建,报告和⽂档的软件项⽬管理⼯具。它填补了Ant 缺点,Maven第⼀次⽀持了从⽹络上下载的功能,仍然采⽤xml作为配置⽂件格式。Maven专注的是依 赖管理,使⽤Java编写。

Gradle

属于结合以上两个的优点,它继承了Ant的灵活和Maven的⽣命周期管理,它最后被google作为了 Android御⽤管理⼯具。它最⼤的区别是不⽤XML作为配置⽂件格式,采⽤了DSL格式,使得脚本更加 简洁。

⽬前市⾯上Ant⽐较⽼,所以⼀般是⼀些⽐较传统的软件企业公司使⽤,Maven使⽤Java编写,是当下⼤ 多数互联⽹公司会使⽤的⼀个构建⼯具,中⽂⽂档也⽐较⻬全,gradle是⽤groovy编写,⽬前⽐较新型的 构建⼯具⼀些初创互联⽹公司会使⽤,以后会有很⼤的使⽤空间

Maven的四⼤特性

依赖管理系统

Maven为Java世界引⼊了⼀个新的依赖管理系统jar包管理jar升级时修改配置⽂件即可。在Java世界 中,可以⽤groupId、artifactId、version组成的Coordination(坐标)唯⼀标识⼀个依赖。

任何基于Maven构建的项⽬⾃身也必须定义这三项属性,⽣成的包可以是Jar包,也可以是war包或者 jar包。⼀个典型的依赖引⽤如下所示:

<dependency>
 <groupId>javax.servlet</groupId>
 <artifactId>javax.servlet-api</artifactId>
 <version>3.1.0</version>
</dependency>

坐标属性的理解 Maven坐标为各种组件引⼊了秩序,任何⼀个组件都必须明确定义⾃⼰的坐标。 groupId  :定义当前Maven项⽬⾪属的实际项⽬-公司名称。(jar包所在仓库路径) 由于Maven中模块的概念, 因此⼀个实际项⽬往往会被划分为很多模块。 ⽐如spring是⼀个实际项⽬,其对应的Maven模块会有很多, 如spring-core,spring-webmvc等。

artifactId :该元素定义实际项⽬中的⼀个Maven模块-项⽬名, 推荐的做法是使⽤实际项⽬名称作为artifactId的 前缀。⽐如:spring-bean,spring-webmvc等。

version :该元素定义Maven项⽬当前所处的版本

多模块构建

项⽬复查时daoservicecontroller层分离将⼀个项⽬分解为多个模块已经是很通⽤的⼀种⽅式。

在Maven中需要定义⼀个parentPOM作为⼀组module的聚合POM。在该POM中可以使⽤标签来 定义⼀组⼦模块。parent POM不会有什么实际构建产出。⽽parent POM中的build配置以及依赖配置 都会⾃动继承给⼦module。

⼀致的项⽬结构

Ant时代⼤家创建Java项⽬⽬录时⽐较随意,然后通过Ant配置指定哪些属于source,那些属于 testSource等。⽽Maven在设计之初的理念就是Conversion over configuration(约定⼤于配置)。其 制定了⼀套项⽬⽬录结构作为标准的Java项⽬结构,解决不同ide带来的⽂件⽬录不⼀致问题。

⼀致的构建模型和插件机制

<plugin>
 <groupId>org.mortbay.jetty</groupId>
 <artifactId>maven-jetty-plugin</artifactId>
 <version>6.1.25</version>
 <configuration>
 <scanIntervalSeconds>10</scanIntervalSeconds>
 <contextPath>/test</contextPath>
 </configuration>
</plugin>

  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值