maven 概念
概念
maven 是用于项目构建 和 包管理的工具。
maven 只对项目构建进行影响,但是不会对java编码、代码产生任何的影响。
maven有什么用
- 项目构建
- 包管理
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公共仓库
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 中可以查看
生命周期
- clean
- compile
- pacakge
- install
- test
- archetype
继承
项目之前存在继承关系
子项目可以继承父项目的配置。
在 maven 中,不同项目之前存在依赖时,其父项目中的配继,是可以被子项目继承的。
仓库位置
maven 仓库有两种意思:
- 本地仓库
- 中央仓库
本地仓库
本地仓库的作用就是保存pom.xml中配置的插件的jar包从网上下载下来存在本地。
默认的位置:
${USER}/.m2
中央仓库
默认仓库,这个就是所有maven的中心了,pom.xml配置后之所以能自动下载,原因就是配置文件通过地址去中央仓库中去把jar包下载到本地的。本地的jar包就是这么来的。中央仓库的地址是可以自定义的。网上有很多第三方的maven仓库。公司里的所谓maven私服也是这个道理,私服中放了很多平时需要用的jar包,从公司下比从网上下要快。
查找顺序
先查找本地仓库,再查找远程仓库。