http://maven.apache.org/download/org
默认远程仓库:
默认远程仓库 maven central配置在
maven-model-builder-3.2.1.jar\org\apache\maven\model\pom-4.0.0.xml
本地仓库位置:
本地仓库位置默认在: ~/.m2/respository下
要修改${M2_HOME}/conf/settings.xml来指定仓库目录
G:.m2\repository
maven核心功能总结:
maven核心作用是编译, 测试, 打包 根目录下的pom.xml文件设置分组ID和artifactId maven基于约定的方式从项目中获取源码与资源文件进行编译打包 对于项目所依赖的组件与本地仓库引用, 如果本地仓库不存在则会从中央仓库下载
项目依赖是指maven通过依赖传播, 依赖优先原则, 可选依赖, 排除依赖, 依赖范围等特性来管理项目classpath
依赖传播特性 我们的项目通常需要依赖第三方组件, 而第三方组件又会依赖其他组件, 遇到这种情况Maven会将依赖网络中的所有节点都加入classpath中, 这就是Maven的依赖传播特性
项目直接依赖了spring-webmvc叫直接依赖, 对commons-logging依赖是通过webmvc传递的所以叫间接依赖
依赖优先原则 基于依赖传播特性, 导致整个依赖网络会很复杂, 难免会出现相同组件不同版本的问题. Maven此时会基于依赖优先原则选择其中一个版本。
第一原则: 最短路径原则
第二原则: 相同路径下配置在前的优先
可选依赖表示这个依赖不是必须的。通过在添true>表示, 默认是不可选的。可选依赖不会被传递
即排除指定的间接依赖. 通过配置配置排除指定组件
compile(默认): 编译范围, 编译和打包都会依赖 provided: 提供范围, 编译时依赖, 但不会打包进去. 如: servlet-api.jar runtime: 运行时范围, 打包时依赖, 编译不会. 如: mysql-connection-java.jar test: 测试范围. 编译运行测试用例依赖, 不会打包进去. 如: junit.jar
在项目构建时通常会包含清理, 编译, 测试, 打包, 验证, 文档生成等步骤. maven统一对其进行了整理抽象成三个生命周期(lifecycle)及各自对应的多个阶段(phase). 这么做的意义是:
每个阶段都成为了一个扩展点, 可以采用不同的方式实现, 提高了扩展性与灵活性规范统一了maven的执行路径 在执行项目构建阶段可以采用jar方式构建也可以采用war包方式构建提高了灵活性maven总共包含三大生命周期
clean Lifecycle: 清理生命周期, 用于清理项目default Lifecycle: 默认生命周期, 用于编译, 打包, 测试, 部署等site Lifecycle: 站点文档生成, 用于构建站点文档生命周期的phase组成了项目构建的完整过程, 这些过程具体由插件实现. maven的核心代码很少, 大部分实现都由插件来完成。比如: test阶段就是由maven-surefire-plugin实现. 在pom.xml中可以设置指定插件目标(gogal)与phase绑定. 当项目构建达到指定的phase时, 就会触发插件gogal的执行