Maven入门

Apache Maven是一个软件项目管理的综合工具。基于项目对象模型(POM)的概念,提供了帮助管理构建、文档、报告、依赖、发布等方法,Maven简化和标准化项目建设过程。处理编译,分配,文档,团队协作和其他任务的无缝连接。
maven的好处在于可以将项目过程规范化、自动化、高效化以及强大的可扩展性,利用maven自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现持续集成等等。

一、Maven做了什么?
1.项目标准化:
Maven项目具有统一的项目结构,这个项目结构是参考业界的最佳实践而成,为后面使用统一的maven命令打下了基础,如测试mvn test、打包mvn package等,无需写一行脚本,就可以方便的实现众多功能。
2.文档和报告:
使用mvn site可以快速生成项目站点,apache很多开源项目站点都采用maven生成,会出现built by maven字样的图标。
3.类库管理:
类库管理是maven一个比较核心的功能,我们就需要将项目所依赖的类库加入到pom.xml中,那么maven会自动将依赖的类库下载到本地,并且下载的类库如果还依赖其他的类库,它也会自动下载过来,这样我们就不需要一个一个类库去下载了。
4.发布管理:
使用maven可以方便的进行项目发表管理。在项目开发到一定阶段,可以使用mvn package打包,它会自动先运行mvn test,跑所有的Test Case,只有全部通过才能正确打包。生成的war包(如果项目的packaging为war)在target目录下。这个 war包与使用ant脚本生成一样,但无需一行脚本,这也是maven对比ant的优势之一。使用mvn install将编译和打包好的文件发布到本地仓库中。使用mvn deploy在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository。

二、Maven的安装与配置
1.Maven下载与安装:官网下载后,解压到安装目录即可。
2.Maven的配置:
(1)系统变量:
- 变量名:JAVA_HOME,值:jdk安装路径
- 变量名:MAVEN_HOME,值:Maven安装路径
- 变量名:M2_HOME,值:Maven安装路径
- 变量名:Path,值:添加%M2_HOME%\bin到末尾
验证:cmd窗口输入:mvn -version,不报错即可。
(2)Eclipse配置:窗口>首选项>Maven>Installation>Add,选择Maven安装目录即可。
(3)更改本地仓库地址
Maven的本地仓库是用来存储所有项目的依赖关系(插件jar和其他文件)的本地文件夹。当你建立一个Maven项目,所有相关文件将被存储在你的Maven本地仓库。
默认的本地仓库为C:\用户\用户名.m2文件夹。本地仓库这种存放文件的目录放在C盘下显然不妥,可改变存放位置到指定路径。
settings.xml文件里面包含仓库地址、镜像、插件、代理等配置,也是maven中一个核心配置文件。这里只介绍关于更改本地仓库位置的部分。步骤如下:

  1. 打开Maven安装目录\conf\settings.xml,添加一行<localRepository>更改后的本地仓库路径</localRepository>(最好就在相关注释下面添加)。
  2. 将settings.xml分别复制到C:\用户\用户名.m2和更改后的本地仓库目录中一份。
  3. 更改Eclipse中的maven配置:窗口>首选项>Maven>User Settings,看是否需要更改Eclipse关联的settings.xml和本地仓库。
  4. cmd窗口执行mvn help:system,会发现Maven从远程库下载的jar包都会放到新修改后的路径。
    3.Maven升级:将最新版的Maven下载并解压到安装目录后,更新系统变量中MAVEN_HOMEM2_HOME的值即可。

三、Maven在Eclipse中的使用
关于直接在cmd中新建Maven项目、使用Maven命令等操作,目前没发现必要的需求,先略过不提,日后若有需求再添加。可参考博客
1.创建Maven项目:
文件>新建>其他>Maven>Maven Project,按照向导往下走即可。值得一提的是,中间会让你输入Group Id和Artifact Id。
Group Id是组织标识,一般是域名.公司名的形式。
Artifact Id是项目标识,也就是项目名称。
Group Id和Artifact Id共同组成包名:(Group Id).(Artifact Id),所以,最好都不要有大写。
2.运行mvn命令
在Maven项目上右键>运行方式,可以运行一些常用mvn命令。
如果没有,可以点击Maven Build,在弹出的窗口中输入要执行的mvn命令。
3.Maven常用命令

  • clean:表示运行清理操作(会默认把target文件夹中的数据清理)。
  • clean compile:表示先运行清理之后运行编译,会将代码编译到target文件夹中。
  • clean test:运行清理和测试。
  • clean package:运行清理和打包。
  • clean install:运行清理和安装,会将打好的包安装到本地仓库中,以便其他的项目可以调用。
  • clean deploy:运行清理和发布(发布到私服上面)。

四、pom.xml简要说明
POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明依赖,等等。
maven的pom.xml文件结构非常清晰,把项目创建好后,我们基本上是在dependencies元素下添加一些子元素及plugins元素下添加一些插件,下面介绍一下各个元素的含义。

1) project是所有pom.xml的根元素,并且在里面定义了命名空间和xsd元素。
2) modelVersion 当前pom模型的版本。
3) groupId定义当前maven项目隶属的实际项目,并会根据这给项目建立包结构。
4) artifactId定义项目中的某个模块名称,如果只有一个模块那就是项目的名称。
5) version 定义maven项目当前所处的版本号,默认0.0.1-SNAPSHOT为快照版本。
6) packaging定义maven项目的打包方式,可以是jar包、war包、pom。
7) dependencies元素底下就是加入依赖包的地方,那么我们从哪里查询依赖包呢,可以查询的地方比较多,我给出一个大家用得比较多的仓库:http://mvnrepository.com
8) 每个dependency都是一个依赖包,依赖包也就是在dependency里面定义各个依赖包的坐标,这样maven就会从网上下载依赖包到你本地仓库中,有所不同的是dependency元素包含了一个子元素,这个就是对maven生命周期的一个说明,当然除了上面四个子元素外,还包含几个其他的元素。
   (1)type说明依赖的类型
   (2)optional标记依赖是否可选
   (3)exclusions 用来排斥传递依赖
   具体来看看这个结构: 

<dependency>

     <groupId>实际项目</groupId>

     <artifactId>模块</artifactId>

     <version>版本</version>

     <type>依赖类型</type>

     <scope>依赖范围</scope>

     <optional>依赖是否可选</optional>

     <!—主要用于排除传递性依赖-->

     <exclusions>

       <exclusion>

         <groupId></groupId>

         <artifactId></artifactId>

       </exclusion>

     </exclusions>

   </dependency>

Maven是通过groupId、artifactId、version这三类似于坐标的元素来确定唯一性的,因此这三个元素对于每个依赖大多是必须的。
没有任何实际的Java代码,我们能够定义一个Maven项目的POM,这体现了Maven的一大优点,它能让项目对象模型最大程度地与实际代码相独立,我们可以称之为解耦。这在很大程度上避免了Java代码和POM代码的相互影响。只要我们定义的POM稳定后,日常的Java代码开发工作中基本不会涉及到POM的修改。

参考:AlanLeeMaven系列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值