工具篇(Maven)---Maven详解

目录

Maven介绍

Maven特点

Maven概念模型图

Maven安装

POM标签说明

Maven生命周期

Maven仓库

Maven依赖搜索顺序

Maven插件


Maven介绍

    Maven 翻译为"专家"、"内行",是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念

    Maven 利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。

    Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理

    Maven 还可以生成报告, 生成Web站点,并且帮助推动工作团 队成员间的交流

    Maven 包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(ProjectLifecycle),一个依赖

    管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑

Maven特点

  • 遵循最佳实践的简单项目设置 - 在几秒钟内启动新项目或模块
  • 所有项目的一致使用 - 意味着新开发人员进入项目的时间不会增加
  • 卓越的依赖管理,包括自动更新,依赖关闭(也称为传递依赖)
  • 能够轻松地同时处理多个项目
  • 一个庞大且不断增长的库,可以立即使用,并与最大的开源项目仓库一起,以实现最新版本的实时可用性
  • 可扩展,能够轻松编写Java或脚本语言的插件
  • 只需很少或不需要额外配置即可即时访问新功能
  • 用于在Maven之外进行依赖关系管理和部署的Ant任务
  • 基于模型的构建:Maven能够根据项目的元数据将任意数量的项目构建到预定义的输出类型(如JAR,WAR或分发)中,而无需在大多数情况下执行任何脚本。
  • 站点的项目信息的连续性:使用与构建过程相同的元数据,Maven能够生成包含您需要添加的任何文档的网站或PDF,并添加有关项目开发状态的标准报告。在“项目信息”和“项目报告”子菜单下,可以在本网站左侧导航栏的底部看到此信息的示例。
  • 发布管理和发布发布:没有太多额外配置,Maven将与您的源代码控制系统(如Subversion或Git)集成,并根据特定标记管理项目的发布。它还可以将其发布到分发位置以供其他项目使用。Maven能够发布单个输出,例如JAR,包含其他依赖关系和文档的存档,或者作为源代码分发。
  • 依赖管理:Maven鼓励使用JAR和其他依赖项的中央存储库。Maven附带了一种机制,您的项目客户可以使用该机制从中央JAR存储库下载构建项目所需的任何JAR,就像Perl的CPAN一样。这允许Maven的用户跨项目重用JAR并鼓励项目之间的通信,以确保处理向后兼容性问题。

Maven概念模型图

工具篇(Maven)---Maven详解_第1张图片

 

Maven安装

安装参数要求
JDK

Maven 3.3 要求 JDK 1.7 或以上

Maven 3.2 要求 JDK 1.6 或以上

Maven 3.0/3.1 要求 JDK 1.5 或以上

内存 没有最低要求
磁盘 Maven 自身安装需要大约 10 MB 空间。除此之外,额外的磁盘空间将用于你的本地 Maven 仓库。你本地仓库的大小取决于使用情况,但预期至少 500 MB
系统 没有最低要求

    下载地址:http://maven.apache.org/download.cgi   具体安装和环境变量的配置本文不再详细说明

POM标签说明


    
    
        
        
        
        
        
        
        
        
    
    
    4.0.0
    
    asia.banseon
    
    banseon-maven2
    
    jar
    
    
    
    1.0-SNAPSHOT
    
    banseon-maven
    
    http://www.baidu.com/banseon
    
    A maven project to study maven.
    
    
        
        
    
    
    
        
        jira
        
        http://jira.baidu.com/banseon
    
    
    
        
        
        
        
        
        
            
            
                
                
                
                
                
                
                
                
                
                
                
                
Demo [email protected] [email protected] [email protected] http:/hi.baidu.com/banseon/demo/dev/ HELLO WORLD banseon [email protected] Project Manager Architect demo http://hi.baidu.com/banseon No -5 Apache 2 http://www.baidu.com/banseon/LICENSE-2.0.txt repo A business-friendly OSS license scm:svn:http://svn.baidu.com/banseon/maven/banseon/banseon-maven2-trunk(dao-trunk) scm:svn:http://svn.baidu.com/banseon/maven/banseon/dao-trunk http://svn.baidu.com/banseon demo http://www.baidu.com/banseon ...... ...... Windows XP Windows x86 5.1.2600 mavenVersion 2.0.3 /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ /usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/ ...... ...... ...... ...... ...... ...... banseon-repository-proxy banseon-repository-proxy http://192.168.1.169:9999/repository/ default ...... org.apache.maven maven-artifact 3.8.1 jar test spring-core org.springframework true ...... banseon-maven2 banseon maven2 file://${basedir}/target/deploy banseon-maven2 Banseon-maven2 Snapshot Repository scp://svn.baidu.com/banseon:/usr/local/maven-snapshot banseon-site business api website scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web

Maven生命周期

Maven三个标准的生命周期
阶段 描述
clean 执行clean生命周期的pre-clean和clean阶段
default(或 build) 是构建的真正核心部分,包含了下面的构建生命周期
site 常用到的是site阶段和site-deploy阶段,用来生成和发布Maven站点
clean 生命周期
阶段 描述
pre-clean 在项目实际进行clean之前做的一些预处理工作
clean 移除所有上一次build过程生成的所有文件
post-clean 完成最终项目clean工作的收尾工作
default\build 生命周期
阶段 描述
validate  验证这个项目是否正确,所有必需资源是否可用
initialize 初始化编译的状态,例如:设置一些properties属性,或者创建一些目录
generate-sources 生成所有在编译阶段需要的源代码
process-sources 处理源代码,例如:替换值(filter any values)
generate-resources 生成这个项目包所有需要包含的资源文件 
process-resources 复制并处理资源文件到目标目录,为packaging 打包阶段做好准备
compile  编译项目的源代码
process-classes 后置处理编译阶段生成的文件,例如:做java字节码的加强操作 
generate-test-sources 生成编译阶段需要的test源代码
process-test-sources 处理test源代码,例如:替换值(filter any values)
generate-test-resources 生成test测试需要的资源文件
process-test-resources 复制并处理资源文件到test测试目标目录
test-compile 编译项目的测试代码到指定test目标目录
process-test-classes 后置处理test编译阶段生成的文件,例如:做java字节码的加强操作 
test  使用适当的单元测试框架运行测试,这些测试用例不应该要求这些代码被打包或者部署才能执行
prepare-package 处理任何需要在正式打包之前要完成的必须的准备工作。这一步的通常结果是解压,处理包版本等  
package  打包编译后的代码成可发包格式,例如:jar,war等
pre-integration-test 完成一些在集成测试之前需要做的预处理操作,这通常包括建立需要的环境
integration-test 处理并部署(deploy)包到集成测试可以运行的环境中 
post-integration-test 处理一些集成测试之后的事情,通常包括一些环境的清理工作
verify  做一些对包的验证操作,去检测这个包是一个合法的符合标准的包
install  将包安装到本地仓库,提供给作为其他项目使用,例如:包的本地依赖 
deploy  最终部署到集成环境或者正式环境,拷贝最终的工程包到远程仓库中,以共享给其他开发人员和工程
site 生命周期
阶段 描述
pre-site 执行一些实际站点生成之前的预处理操作
site  生成项目的站点文档  
post-site 执行一些后置操并完成最终生成站点操作,并为最后站点发布做好准备
site-deploy 部署这个生成好的站点文档到指定的web服务器 

Maven仓库

    Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库

    在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件

    Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地

Maven 仓库类型和配置
类型 配置
本地仓库 修改Maven的安装目录下的conf目录下的settings.xml文件的 标签中的地址
中央仓库 同样修改settings.xml文件的配置,在标签中插入相关信息,然后通过标签进行激活
远程仓库 在pom.xml中配置,在标签中插入相关仓库信息

Maven依赖搜索顺序

    当我们执行 Maven 构建命令时,Maven 开始按照以下顺序查找依赖的库:

  • 步骤 1 - 在本地仓库中搜索,如果找不到,执行步骤 2,如果找到了则执行其他操作。
  • 步骤 2 - 在中央仓库中搜索,如果找不到,并且有一个或多个远程仓库已经设置,则执行步骤 4,如果找到了则下载到本地仓库中以备将来引用。
  • 步骤 3 - 如果远程仓库没有被设置,Maven 将简单的停滞处理并抛出错误(无法找到依赖的文件)。
  • 步骤 4 - 在一个或多个远程仓库中搜索依赖的文件,如果找到则下载到本地仓库以备将来引用,否则 Maven 将停止处理并抛出错误(无法找到依赖的文件)。

Maven插件

    Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成。

插件类型
类型 描述
Build plugins 在构建时执行,并在 pom.xml 的 元素中配置。
Reporting plugins 在网站生成过程中执行,并在 pom.xml 的 元素中配置。
常用插件
插件 描述
clean 构建之后清理目标文件。删除目标目录。
compiler 编译 Java 源文件。
surefile 运行 JUnit 单元测试。创建测试报告。
jar 从当前工程中构建 JAR 文件。
war 从当前工程中构建 WAR 文件。
javadoc 为工程生成 Javadoc。
antrun 从构建过程的任意一个阶段中运行一个 ant 任务的集合。

除了这些核心插件之外,还有很多优秀的第三方插件,可以帮助我们快捷、方便的构架项目。

当使用到某些功能或者特性的时候多加搜索,往往得到让你惊喜的效果。

    另附上一个平时工作中经常使用到的Maven工具,点击项目右键即可进行各种maven操作。点击下载  提取码:pw0x 

你可能感兴趣的:(工具篇(Maven)---Maven详解)