《Maven实战》阅读笔记:chapter6-8

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a_842297171/article/details/81734762
  • 在Maven世界中,任何一个依赖、插件或者项目构建的输出,都可以称为构件
  • 对于Maven来说,仓库只分为两类:本地仓库远程仓库。私服是一种特殊的远程仓库。
  • 这里写图片描述
  • 在Linux系统中,以点(.)开头的文件或目录默认是隐藏的,可以使用ls -a命令显示隐藏文件或目录。
  • Maven3的超级POM在文件$ MAVEN_HOME/lib/maven-model-builder-x.x.x.jar中的org/apache/maven/model/pom-4.0.0.xml路径下, - Maven3的超级POM在文件$ MAVEN_HOME/lib/maven-x.x.x-uber.jar中的org/apache/maven/model/pom-4.0.0.xml路径下。
  • 超级POM是所有Maven项目都会继承的POM。相当于java里面的Object类,超级POM中自带了中央仓库的配置。
  • 私服是一种假设在局域网内的特殊的远程仓库。它可以节省外网带宽,加速Maven构建,降低中央仓库的负荷,部署自己的构建,提高稳定性,增强控制。
<projects>
 ...
    <repositories>
        <repository>
            ...
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>daliy[never][always][interval:X]</updatePolicy>
                <checksumPolicy>ignore</checksumPolicy>
            </snapshots>
        </repository>
    </repositories>
</projects>
  • 仓库信息可以直接配置在POM文件中,但是认证信息必须配置在settings.xml中。
  • 安装到本地仓库,部署到远程仓库。
  • mvn clean install -U,安装的时候强制检查更新。
  • 如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。X包含Y,X>=Y。
  • 命令行的输入往往就对应了生命周期,如mvn package就表示执行默认生命周期阶段的package。Maven的生命周期是抽象的,其实际行为由插件来完成。
  • Maven的生命周期就是为了对所有的构建过程进行抽象和统一,这个生命周期包含了项目的清理,初始化,编译,测试,打包,集成测试,验证,部署和站点生成。
  • Maven拥有三套相互独立的生命周期,分别是cleandefaultsite。clean的目的是清理项目,default的目的是构建项目,site的目的是建立项目站点。
  • 插件前缀:插件目标
  • Maven引入了目标前缀的概念,比如helpmaven-help-plugin的目标前缀,dependencymaven-dependency-plugin的前缀。这些前缀都在插件仓库元数据上定义。<prefix></prefix>
  • maven在超级POM中为所有核心插件设定了版本。
  • 一般来说,一个项目的子模块都应该使用同样的groupId,如果它们一起开发和发布,还应该使用同样的version,此外,还应该使用同样的version,它们的artifactId还应该使用一致的前缀,以方便同其它项目区分。
  • 聚合是聚合,继承是继承。虽然现实项目中把一个pom作为聚合pom,同时也作为父pom,但其实是两个概念。
  • 如果你一次性想构建多个项目,使用聚合。
  • 如果你想定义一个模板pom,减少代码量,消除重复配置,或者追求一种统一,使用继承。
  • 聚合pom和父pom的打包方式packing都必须为pom,否则无法构建。
  • artifactId不可被继承。
  • Maven提供的dependencyManagement元素既能让子模块继承到父模块的依赖配置,又能保证子模块依赖使用的灵活性。dependencyManagement声明的依赖既不会给父模块引入依赖,也不会给子模块引入依赖。只有子模块声明了依赖使用,才会产生实际的效果。
  • 使用<scope>import</scope>将另一个pom的dependencyManagement导入。
  • 同理,pluginManagement元素帮助管理插件。
  • 在超级pom中,定义了项目的结构,比如src/main/java
  • 在一个多模块的maven项目中,反应堆是指所有模块组成的一个构建结构;对于单模块的项目,反应堆就是该模块本身。
  • mvn -h如下内容:
 -am,  --also-make                      If project list is specified, also
                                        build projects required by the
                                        list
 -amd, --also-make-dependents           If project list is specified, also
                                        build projects that depend on
                                        projects on the list
 -pl,  --projects <arg>                 Comma-delimited list of specified
                                        reactor projects to build instead
                                        of all projects. A project can be
                                        specified by [groupId]:artifactId
                                        or by its relative path
 -rf, --resume-from <arg>               Resume reactor from specified
                                        project
    -

猜你喜欢

转载自blog.csdn.net/a_842297171/article/details/81734762