在Java项目开发中,项目的编译、测试、打包等是比较繁琐的,属于重复劳动的工作,浪费人力和时间成本。以往开发项目时,程序员往往需要花较多的精力在引用jar包搭建项目环境上,跨部门甚至跨人员之间的项目结构都有可能不一样。Maven的仓库管理、依赖管理、继承和聚合等特性为项目的构建提供了一整套完善的解决方案。所以整理了有关Maven的知识,分享给大家。小编水平有限,有错误之处望大神指教。??
Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a project’s build, reporting and documentation from a central piece of information.
从官网的介绍中我们可以看到Apache Maven是一个项目管理工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。
Maven是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。
项目构建:
项目构建包括清理,···,编译,测试,报告,打包,部署···等步骤
理想的项目构建
高度自动化,跨平台,可重用的组件,标准化
传统方式管理jar包依赖的问题:
-
jar包冲突
-
jar包依赖
-
jar包体积过大
-
jar包在不同阶段无法个性化配置
使用maven方式管理jar包依赖的好处:
-
解决jar包冲突
-
解决jar包依赖问题
-
jar包不用再每个项目保存,只需要放在仓库即可
-
maven可以指定jar包的依赖范围
注:Maven安装与配置参考Maven安装与配置
若要使用Maven,那么项目的目录结构必须符合Maven的规范,其目录结构如下:
project
src
main 项目主代码和资源
java 项目的Java源代码
resources 项目的资源文件
webapp web项目资源文件(可无)
test 单元测试代码和资源
java 测试的Java源代码
resources 测试的资源文件(可无)
target 打包输出目录(可无)
classes 编译输出目录
test-classes 测试编译输出目录
pom.xml
POM
POM(Project Object Model)项目对象模型,一个项目所有的配置都放在POM文件中:定义项目的类型、名字、管理依赖关系,定制插件的行为等等。
Maven通过pom.xml文件来管理依赖和管理项目的构建生命周期,而项目构建的生命周期是依靠一个个的插件完成的。