`

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

阅读更多


1. Maven的生命周期怎么理解?

    1. 一个阶段是“构建生命周期”中的一个步骤。生命周期是指包含在一个项目构建中的一系列有序的阶段
    2. 插件目标可以附着在生命周期阶段上。随着Maven沿着生命周期的阶段移动,它会执行附着在特定阶段上的目标


2. 学习使用Help插件
    1. help:active-profiles
        列出当前构建中活动的Profile(项目的,用户的,全局的)。
    2. help:effective-pom
        显示当前构建的实际POM,包含活动的Profile。
    3. help:effective-settings
        打印出项目的实际settings, 包括从全局的settings和用户级别settings继承的配置。
    4. help:describe
        描述插件的属性。它不需要在项目目录下运行,但是你必须提供你想要描述插件的 groupId 和 artifactId。也可以传         入插件的前缀(如help)如: mvn help:describe -Dplugin=help -Ddetail(书上用-Dfull)


3. 运行mvn的方式

    1. mvn archetype:create 这里archetype是一个插件标识而create是目标标识,一个Maven插件是一个单个或者多          个目标的集合.该命令没有创建 src/main/resources目录
    2. create目标定义了一个配置属性archetypeArtifactId,不指定时它有一个默认值为maven-archetype-              

        quickstart,生成的目录名与artifactId匹配.指定 archetypeArtifactId 为 maven-archetype-webapp,将创建           一个web项目.
    3. mvn package 命令行并没有指定一个插件目标,而是指定了一个Maven生命周期阶段.生命周期是包含在一个项目        构建中的一系列有序的阶段


4. 插件

    1. Maven Surefire 插件是负责运行单元测试的插件.测试报告:target\surefire-reports
    2. Maven Archetype 插件
    3. Maven Exec 插件.它不是 Maven 核心插件,但它可以从Codehaus 的 Mojo 项目得到.虽然 Exec 插件很有用,         你不应该依赖它来运行你的应用程序.
       Exec 插件让我们能够在不往 classpath 载入适当的依赖的情况下,运行这个程序。Exec 能做这样的工作是因为            Maven 已经知道如何创建和管理你的 classpath 和你的依赖.
    4. Maven Dependency 插件.
        打印已解决依赖的列表: mvn dependency:resolve
        如果你想知道你项目的整个依赖树,你可以运行 dependency:tree 目标
    5. Maven Assembly 插件:是一个用来创建你应用程序特有分发包的插件.需要在 pom.xml 中的build 配置中添加               plugin 配置,再运行 mvn assembly:assembly 来构建这个装配


5. 项目坐标
    1. groupId, artifactId, version和packaging。这些组合的标识符拼成了一个项目的坐标.
    2. groupId以创建这个项目的组织名称的逆向域名(reverse domain name)开头
    3. version:正在开发中的项目可以用一个特殊的标识,这种标识给版本加上一个“SNAPSHOT”的标记
    4. packaging:也是Maven坐标的重要组成部分(不过在书上的后半部分又把它排除在坐标之外),但是它不是项目唯一         标识符的一个部分.你不能同时有一个拥有同样的groupId, artifactId和version标识的项目


6. 依赖范围

    1. 当一个依赖的范围是test的时候,说明它在Compiler插件运行compile目标的时候是不可用的。它只有在运行                 compiler:testCompile和surefire:test目标的时候才会被加入到classpath中.测试范围依赖是一个只在测试编译           和测试运行时在 classpath 中有效的依赖。如果你的项目是以 war 或者 ear 形式打包的,测试范围依赖就不会被           包含在项目的打包输出中。


7. 单元测试

    1. 忽略单元测试失败:1)设置 Surefire 的testFailureIgnore 这个配置属性为 true;2) mvn test -                                 Dmaven.test.failure.ignore=true

    2. 跳过单元测试:1)设置 Surefire 的skip这个配置属性为 true;2) mvn install -Dmaven.test.skip=true


8. web应用

    1. 可以通过mvn tomcat:run来启动web,并且不需要在pom.xml配置相应的插件.
        1. 跳过测试:-Dmaven.test.skip(=true)
        2. 指定端口:-Dmaven.tomcat.port=9090
        3. 忽略测试失败:-Dmaven.test.failure.ignore=true
    2. 也可以通过mvn jetty:run来实现相同的目的,不过需要在pom.xml中做相应的插件配置.


9.POM优化

   1. 优化依赖
      1. 依赖重复声明:找出所有被用于一个以上模块的依赖,然后将其向上移到父POM的dependencyManagement片             段,在这些依赖配置被上移之后,我们需要为每个POM移除这些依赖的版本,否则它们会覆盖定义在父项目中的                 dependencyManagement.父POM包含一个版本和一组排除配置,所有的子POM需要使用groupId和                       artifactId引用这个依赖。
      2. 版本重复问题:创建<properties>                                                                                  

          <hibernate.annotations.version>3.3.0.ga</hibernate.annotations.version></properties>属性

          ,然后在<dependency>配置节里加入<version>${hibernate.annotations.version}</version>
      3. 兄弟依赖不匹配:为兄弟项目使用内置的项目version和groupId
   2. 优化插件
       1. 使用元素顶层POM build元素下的pluginManagement元素
       2. 通过属性来解决插件里的依赖的版本重复问题.
   3. 使用Maven Dependency插件进行优化
       1. 总是为你代码引用的类显式声明依赖
       2. 运行dependency:analyze,该目标分析这个项目,查看是否有直接依赖,或者一些引用了但不是直接声明的依                赖。
       3. 为了进一步调查,运行dependency:tree目标,该目标会列出项目中所有的直接和传递性依赖。
   4. 大部分复杂的Maven多模块项目倾向于在顶层POM中定义所有的版本

 

分享到:
评论

相关推荐

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

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

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

    《PDF文档 Maven权威指南_中文完整版清晰》是一部深入解析Apache Maven的综合性教程,旨在帮助Java开发者全面理解并熟练运用Maven这一强大的项目管理和构建工具。本指南覆盖了Maven的基础概念、核心功能以及高级应用...

    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权威指南_中文完整版清晰

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

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

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

    Maven Book (ZH)_ Maven权威指南.pdf

    ### Maven权威指南知识点总结 #### 一、Maven概述 **1.1 Maven定义与功能** Maven是一款项目管理和理解工具。它通过一系列标准集合、项目生命周期、依赖管理系统以及插件系统来支持项目的构建和管理。 **1.2 ...

Global site tag (gtag.js) - Google Analytics