maven

本文主要介绍了Maven,它服务于Java平台的项目构建、依赖管理和信息管理。对比了Ant、Maven和Gradle等构建工具,阐述了Maven的四大特性,包括依赖管理系统、多模块构建、一致的项目结构和构建模型及插件机制,还对Maven坐标属性进行了解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Maven :

Maven主要服务于基于java平台的项目构建,依赖管理和项目信息管理.无论是小型的开源类库项目,还是大型的企业级应用; 无论是传统的瀑布式开发,还是流行的敏捷开发,Maven 都能大显身手

项目构建:

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

项目构建的工具:
Ant构建:

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

Maven(java):

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

Gradle

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

Maven的四大特性:
1 依赖管理系统
2 多模块构建
3 一致的项目结构
4一致的构建模型和插件机制

1 依赖管理系统:

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 项目当前所处的版本。

多模块构建:

项目复查时 dao service controller 层分离将一个项目分解为多个模块已经是 很通用的一种方式。在Maven中需要定义一个parentPOM作为一组module的聚合POM。
在该 POM 中可以使用 标签来定义一组子模块。
parent POM 不会有什么实 际构建产出。
而 parent POM 中的 build 配置以及依赖配置都会自动继承给子 module。

一致的项目结构(不同的ide项目结构是一致的):

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

一致的构建模型和插件机制:(通过pom配置tomcat, jetty插件)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值