Maven学习

1.Maven与ant比较:

      Ant是过程式的,开发者显式地指定每一个目标,以及完成该目标所需要执行的任务。针对每一个项目,开发者都需要重新编写这一过程,这里其实隐含着很大的重复。Maven是声明式的,项目构建过程和过程各个阶段所需的工作都由插件实现,并且大部分插件都是现成的,开发者只需要声明项目的基本元素,Maven就执行内置的、完整的构建过程。这在很大程度上消除了重复。

      Ant是没有依赖管理的,所以很长一段时间Ant用户都不得不手工管理依赖,这是一个令人头疼的问题。幸运的是,Ant用户现在可以借助Ivy管理依赖。而对于Maven用户来说,依赖管理是理所当然的,Maven不仅内置了依赖管理,更有一个可能拥有全世界最多Java开源软件包的中央仓库,Maven用户无须进行任何配置就可以直接享用。

      maven分模块开发项目!ant最主要是依赖管理不好做。

 

2.Maven初步 :

在pom.xml中

groupId用来表示项目的名称,当你用Maven install时,打包的文件就在Maven仓库路径下的groupId路径中。

artifactid用来表示项目的模块名称,建议使用项目的名称-模块名称来表示。

version表示这个项目版本名称。

 

固定的放置:

源代码应该放置到src/main/java中

源代码的资源文件放置在src/main/resources文件夹中

测试代码放置在src/test/java中

测试代码的资源文件放置在scr/test/resources文件夹中

 

mvn clean -->表示运行清理操作(会默认把target文件夹中的数据清理)

mvn clean compile -->表示先运行清理之后运行编译,将代码编译到target文件夹中

mvn clean test-->运行清理和测试

mvn clean package-->运行清理和打包

mvn clean install -->运行清理和安装,会将打好的包安装到本地仓库中,以便其他的项目可以依赖调用

mvn clean deploy -->运行清理和发布(发布的私服上),这时maven寻找依赖时,如果本地仓库找不到就到私服上找,私服上找不到就到中央仓库找

 

3.Maven三大内容:

1.依赖 2.仓库 3.生命周期和插件

 

依赖: 

 

  1. 所有的依赖都是通过坐标来进行存储的(GAV -->groupId、artifactId、version)
  2. 有一些网上的仓库提供了坐标的查询。如 http://mvnrepository.com
  3. 传递性依赖的范围:<scope></scope>没有默认就是compile,如果像JUNIT的test范围不会传递过去。
  4. test范围指的是测试范围有效,在编译和打包时都不会使用这个依赖。
  5. compile范围指的是编译范围有效,在编译和打包都会将依赖存储进去。
  6. provided依赖,在编译和测试的过程有效,最后生成WAR包时不会加入(因为TOMCAT等WEB服务器存在,再打包就会冲突),如servlet-api。
  7. runtime在运行的时候依赖,在编译的时候不依赖。
  8. 如果a-->b1.0  c-->b1.1  d-->a和c,这个时候在d的pom中,哪一个依赖先写就使用先写依赖的版本。
  9. 如果依赖路径的长短不一致,依赖短的路径。此时可用<dependency>节点下的<exclusions>< exclusion></ exclusion></exclusions>排除。
     聚合:
      在一个pom里完成所有模块的编译。在IDE里可以新建一个项目,或者在所有项目的根目录下建一个pom.xml
通过根节点下的<modules><module>../xx</module></modules>,打包方式为pom。
     继承:
因为POM里的信息是重复的。在<properties>定义一个属性,用EL表达式使用属性。
可以再定义一个项目,把属性,仓库等重复的节点都拷进来,在其他项目中,通过<parent>的GAV属性找这个 项目,还有一个<relativePath>。去掉重复的节点。
当用<dependencyManagement>时,不需要在子类中定义<version>,自动会去父类找。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值