版权声明:本文为博主原创文章,未经博主允许不得转载。 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拥有三套相互独立的生命周期,分别是
clean
、default
和site
。clean的目的是清理项目,default的目的是构建项目,site的目的是建立项目站点。 插件前缀:插件目标
- Maven引入了目标前缀的概念,比如
help
是maven-help-plugin
的目标前缀,dependency
是maven-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
-
-