概念

maven 是用于项目构建 和 包管理的工具。
maven 只对项目构建进行影响,但是不会对java编码、代码产生任何的影响。

maven有什么用

  1. 项目构建
  2. 包管理

maven属于工具,下载安装后也需要配置path。非常简单。
而对maven的使用就是在使用maven的操作规范的情况下,用cmd输入maven命令即可。

使用maven必须在有网络的情况下,否则不可能成功。因为maven是自动去中央仓库中下载插件的,并把插件下到本地仓库中。

推荐书 《maven实战》

学习maven必须要有两个新概念要劳记:
1.模块
2.版本

大概摸到maven 命令的规律,maven的命令一般以模块或插件为基础比如

mvn eclipse:eclipse //生成eclipse 项目
mvn assembly:singl -DdescriptorId=project //mvn 插件:插件模块 -D参数
maven 的perperties 标签可以影响到作域,在.properties 文件中用${ }可以取到sitting.xml中的值,如果是pom中的properties标签是否也能被取到。

maven公共仓库

www.mvnrepository.com

maven 项目结构

假设一个测试名为TestMaven的新项目来说明。src目录和一个pom.xml的配置文件。后面根据程序运行会有新目录产生。
1.项目目录下的结构三个同级:

TestMaven\pom.xml 项目模型文件
TestMaven\src 代码存放处
TestMaven\target 生成的报告、class文件、jar包都在这里。不要把这个更新到svn中去。

2.src目录下固定必须是main 和 test 不能有任何不同。
所有的代码必须放在java目录中。可以从java目录开始建包。

\src\main\java 正式的JAVA代码,这是规定。
\src\main\resources 放资源文件,比如spring.xml、log4j这些配置。这个文件夹自己创建。
\src\test\java 所有测试项目都放这里。
\src\test\resources 放测试文件的配置。
\src\test\webapp 所有web文件,js、jsp之类下面包含的还是WEB-INFO。不要被名字搞蒙。

这些在Effective pom 中可以查看

生命周期

  1. clean
  2. compile
  3. pacakge
  4. install
  5. test
  6. archetype

继承

项目之前存在继承关系
子项目可以继承父项目的配置。
在 maven 中,不同项目之前存在依赖时,其父项目中的配继,是可以被子项目继承的。

仓库位置

maven 仓库有两种意思:

  1. 本地仓库
  2. 中央仓库

本地仓库

本地仓库的作用就是保存pom.xml中配置的插件的jar包从网上下载下来存在本地。
默认的位置:

${USER}/.m2

中央仓库

默认仓库,这个就是所有maven的中心了,pom.xml配置后之所以能自动下载,原因就是配置文件通过地址去中央仓库中去把jar包下载到本地的。本地的jar包就是这么来的。中央仓库的地址是可以自定义的。网上有很多第三方的maven仓库。公司里的所谓maven私服也是这个道理,私服中放了很多平时需要用的jar包,从公司下比从网上下要快。

查找顺序

先查找本地仓库,再查找远程仓库。