`

《Maven权威指南》学习笔记(三)

阅读更多

 

  1. 构建生命周期
    1. Maven使用POM描述项目,将其建模成一些名词.在Maven中这些“动词”是由Maven插件包装的一些目标,它们绑定到一个构建生命周期的阶段中.当你让Maven构建一个项目的时候,你其实是让它一步步通过那些预定义的有序的阶段,并且运行所有注册到某个特定阶段的目标
    2. Maven中有三种标准的生命周期:清理(clean),默认(default)(有时候也称为构建),和站点(site)
      1. 清理生命周期 (clean):它包含了三个生命周期阶段pre-clean,clean,post-clean
        1. 简单的运行clean:clean目标不会完整的执行该生命周期,但是指定clean阶段就能使用clean生命周期,并且逐个的经过生命周期阶段,直到到达clean阶段(可能未到post-clean阶段就停了)
        2. 指定post-clean阶段能经过完整的clean生命周期,直到post-clean阶段.
        3. 直接运行pre-clean阶段会提示:[INFO] No goals needed for project – skipping.可以在它的构建配置中,绑定了某个目标至pre-clean阶段
        4. 可以自定义Clean插件的行为去删除构建输出目录以外的文件
      2. 默认生命周期 (default):它是一个软件应用程序构建过程的总体模型。第一个阶段是validate,最后一个阶段是deploy
      3. 站点生命周期 (site):它包含了四个阶段:1. pre-site 2. site  3. post-site  4. site-deploy  默认绑定到站点生命周期的目标是:1. site – site:site  2. site-deploy -site:deploy
      4. 在上述这些生命周期里,如果某个生命周期阶段没有目标绑定在其上,运行该阶段会提示[INFO] No goals needed for project – skipping
    3. 打包相关生命周期
      1. 绑定到每个阶段的特定目标默认根据项目的打包类型设置
      2. JAR打包默认的目标
        生命周期阶段 目标
        process-resources resources:resources
        compile compiler:compile
        process-test-resources resources:testResources
        test-compile compiler:testCompile
        test surefire:test
        package jar:jar
        install install:install
        deploy deploy:deploy
    4. 通用生命周期目标
      1. Process Resources:
        1. 大部分生命周期将resources:resources目标绑定到process-resources阶段.。process-resources阶段处理资源并将资源复制到输出目录,同时也会在资源上应用过滤器,能让你替换资源文件中的一些符号(而不是指pom.xml)
        2. 要配置使用该default.properties文件的资源过滤,我们需要在这个项目的POM中指定两样东西:构建配置的filters元素中的属性文件列表,以及一个标记告诉Maven资源目录需要过滤。默认的Maven行为会跳过过滤,只是将资源复制到输出目录;你需要显式的配置资源过滤,否则Maven就会置之不理
        3. 添加资源目录列表<resource>      <directory>src/main/images</directory>    </resource>
        4. 也可以声明两个资源目录,给它们提供不同的过滤配置和目标目录配置
      2. Compile:
        1. 大部分生命周期将Compiler插件的compile目标绑定到compile阶段
        2. 可以为Compiler插件设置source和target版本
        3. 如果你想要存储项目的源码至src/java而非src/main/java,让构建输出至classes而非target/classes,你可以覆盖定义在超级POM中的sourceDirectory的默认值
      3. Process Test Resources:  调用resources:testResources
      4. Test Compile:调用compile:testCompile编译测试源代码目录至测试构建构建输出目录
      5. Test:大部分生命周期绑定Surefire插件的test目标至test阶段
        1. maven.test.skip变量同时控制Compiler和Surefire插件,如果你传入maven.test.skip,就等于告诉Maven整个的跳过测试
      6. Install:Install插件的install目标基本上都是绑定到install生命周期阶段。install:install目标只不过是将项目的主要构件安装到本地仓库,如果这个项目的打包类型是POM,那么该目标就仅仅复制POM到本地仓库
      7. Deploy:Deploy插件的deploy目标通常绑定到deploy生命周期阶段。该阶段用来将一个构件部署到远程Maven仓库,当你执行一次发布的时候通常需要更新远程仓库
  2. 第11章 构建Profile 和 第12章 Maven套件 先跳过不看(profile能解决产品环境和开发环境数据库地址不同的问题)
  3. 属性和资源过滤
    1. 属性
      1. 你可以在pom.xml文件或者资源文件中使用属性,资源文件被会Maven Resource插件的过滤特性处理
      2. 隐式的属性:project.*,settings.*env.*,Java系统属性
      3. Maven项目的属性:
        1. 任何在Maven POM 中的东西都可以用属性来引用(project.groupId 和 project.version)
      4. 如果你试图在Maven中引用输出目录,你绝不应该使用如target/classes的字面量,而是应该使用属性来引用这些目录(project.build.*)
        1. 关于Maven Model对象可用属性的完整列表(关于model对象的属性还不是很清楚,应该是诸如model.*)
      5. Maven的Settings属性
      6. 环境变量属性
      7. Java系统属性:任何你能从System.getProperty()获取的属性都能以Maven属性的形式引用,如:java.version
      8. 用户定义的属性:
        1. 用户定义的属性可以在POM中引用,也可以由Maven Resource插件用来过滤资源
    2. 资源过滤:
      1. 你可以使用Maven来对项目资源进行变量替换。在资源过滤被激活的时候,Maven会扫描资源,寻找由${ 和}包围的Maven属性的引用。一旦它找到这些引用,它就会使用合适的值去替换它们,就像前一节中定义的属性可以在POM中引用一样
      2. 该节和profile有点关联,因为第11章未看,理解不够深.
  4. 第 14 章 Maven和Eclipse: m2eclipse  没有IDE,跳过
  5. 第15章及其以后的章节都先跳过.
  6. 附录A稍微过了一遍.附录B没看.

要点:

  1. Maven 不知道如何打包 WAR 文件,也不知道如何运行单元测试,Maven大部分的智能是由插件实现的,而插件从 Maven 仓库获得.当你下载Maven的时候,你得到的是一个包含了基本躯壳的Maven核心,它知道如何解析命令行,管理classpath,解析POM文件,在需要的时候下载Maven插件
  2. conf/ 目录包含了一个全局的settings.xml文件,该文件用来自定义你机器上Maven的一些行为。如果你需要自定义Maven,更通常的做法是覆写~/.m2目录下的settings.xml文件,每个用户都有对应的这个目录
  3. 当Maven运行一个目标的时候,每个目标都会访问定义在项目POM里的信息
  4. 在一个Java项目中,Java类放在src/main/java下面,而classpath资源文件放在src/main/resources下面
  5. Maven自带了一个用来下载Maven核心插件和依赖的远程仓库地址(http://repo1.maven.org/maven2)
  6. Maven仓库的标准是按照下面的目录格式来存储构件,相对于仓库的根目录:/<groupId>/<artifactId>/<version>/<artifactId>-<version>.<packaging>
  7. 一旦Maven已经从远程仓库下载了一个构件,它将永远不需要再下载一次,因为maven会首先在本地仓库查找插件,然后才是其它地方
  8. 它支持了传递性依赖(transitive dependencies),Maven会隐式的把这些库间接依赖的库也加入到你的项目中.
  9. 添加一些关于项目许可证,组织以及项目相关开发人员的一些信息.,licenses,organization 和 developers 等元素
  10. 一个插件目标也被认为是一个 “Mojo”
  11. 开启调试输出允许你看到Maven 工作时的依赖机制,查看完整的依赖踪迹: mvn install -X
PS:
  1. 学习如何浏览邮件列表
  2. artifact:人工制品;手工艺品;加工品
  3. archetype:原型
  4. snapshot:快照

问题:

  1. 在向create目标传入了packageName参数,与不传入没什么区别,生成的pom.xml没有变化,最后打包的名称也没有不同.
  2. 一开始构建前将conf/setting.xml下的repository地址改过后,将不会生成默认的~/.m2文件夹,而且针对每个用户的配置文件~/.m2/setting.xml也没有生成.

 

分享到:
评论

相关推荐

    Maven权威指南中文版(完整).pdf

    Maven权威指南中文版 Maven是一种基于项目对象模型(POM)的项目管理和构建工具,旨在提供一种通用的、跨语言的、跨平台的项目管理方式。 Maven的主要特点是约定优于配置(Convention Over Configuration),它提供...

    PDF文档 Maven权威指南_中文完整版清晰

    本指南覆盖了Maven的基础概念、核心功能以及高级应用,是学习和掌握Maven不可或缺的参考资料。 Maven是一个基于项目对象模型(Project Object Model,POM)的概念,它能够自动化构建Java项目,包括编译源代码、运行...

    maven权威指南英文原版

    ** Maven权威指南中文详解 ** Maven,一个Java项目管理和综合工具,是开发人员不可或缺的神器,尤其在大型企业级项目中,它以其强大的依赖管理、构建自动化和标准化的项目结构,大大提升了开发效率。本篇文章将基于...

    Maven权威指南中文版.pdf

    数千第三方组件的项目来说,Maven已经证明了它是一个不可缺少的工具。它帮助数百万的工程师从日常工作中减轻维护第三方依赖的负担,它帮助很多组织从构建管理的泥 潭中挣脱出来,步入新的台阶,构建和维护软件所需要...

    Maven权威指南_maven_

    **Maven权威指南** 《Maven权威指南》是Java开发者必备的工具书,它全面而深入地介绍了Maven这一强大的项目管理和构建工具。Maven不仅仅是一个编译工具,更是Java开发过程中的一个中心枢纽,它简化了项目的构建、...

    Maven权威指南最全讲授

    通过深入学习《Maven权威指南最全讲授》,读者不仅能了解Maven的基本使用,还能掌握高级特性,如自定义插件开发、 profiles的使用、以及如何优化Maven配置以适应大型复杂项目的需求。这本书将引领读者从Maven的入门...

    Maven权威指南中文版(完整)

    ### Maven权威指南中文版知识点概览 #### 一、引言与Maven概念 - **Maven概述**:Maven是一种项目管理和理解工具,旨在通过一套标准流程来简化项目的构建过程。 - **约定优于配置(Convention Over Configuration)...

    Maven权威指南中文完整版清晰

    《Maven权威指南中文完整版清晰》是一本深入解析Maven构建工具的教程,它为Java开发者提供了详尽的指导,帮助他们理解和掌握Maven的使用。Maven是Apache软件基金会开发的一个项目管理工具,主要用于Java项目的构建、...

    maven 权威指南(中文版)

    maven 权威指南(中文版) 。

    maven权威指南中文版

    maven权威指南中文版,

    maven权威指南开发实例代码

    《Maven权威指南开发实例代码》是一本深入探讨Maven构建工具的实践性书籍,它提供了丰富的示例代码,帮助开发者全面理解并掌握Maven的使用。Maven是Apache软件基金会开发的一款项目管理和综合工具,它主要负责管理...

    Maven权威指南中文版(完整).rar

    **Maven权威指南中文版(完整)** Maven是一个强大的Java项目管理工具,它通过一个中央仓库管理和构建项目,使得依赖管理和构建过程标准化。这份"Maven权威指南中文版"是对于Maven用户和开发者非常宝贵的资源,它全面...

    Maven权威指南_中文完整版清晰

    《Maven权威指南_中文完整版清晰》是一本详尽阐述Maven的书籍,它为Java开发者提供了构建项目、管理依赖以及自动化构建流程的全面指导。Maven是Apache软件基金会开发的一款项目管理和综合工具,它极大地简化了Java...

    Maven权威指南中文版及相关实例

    本书《Maven权威指南中文版》深入浅出地介绍了Maven的核心概念、配置以及实际应用,是Java开发者必备的学习资料。书中结合了大量的实例,帮助读者更好地理解和掌握Maven的使用技巧。 ### Maven核心概念 1. **项目...

Global site tag (gtag.js) - Google Analytics