maven仓库
本地仓库:Maven 的本地仓库是机器上的一个文件夹。它在你第一次运行任何 maven 命令的时候创建。
远程仓库:Maven 的远程仓库可以是任何其他类型的存储库,可通过各种协议,例如 file://
和 http://
来访问。
中央仓库:Maven 的中央仓库是 Maven 社区维护的,里面包含了大量常用的库,我们可以直接引用,但是前提是我们的项目能够访问外网。
私有仓库:除了 Maven 的中央仓库外,还有一种就是私有仓库,这种仓库通常都是企业内部创建的一个私有库,用于一些内部jar包的维护与共享。由于网络原因和鉴于安全性的考虑,很多公司的内外网是隔离的,要想直接访问中央仓库是不可能的,并且直接把内部资源暴露在互联网上也是非常危险的,所以这时就需要创建一个私有库。
备注:寻找顺序:Maven本地仓库==》私有仓库==》中央仓库
仓库配置示例:
<project>
...
<profiles>
<profile>
<id>
central
</id>
<repositories>
<repository>
<id>
Central
</id>
<name>
Central
</name>
<url>
http://repo.maven.apache.org/maven2/
</url>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>
central
</activeProfile>
</activeProfiles>
...
</project>
镜像:Mirror
则相当于一个代理,它会拦截去指定的远程 Repository
下载构件的请求,然后从自己这里找出构件回送给客户端。配置 Mirror
的目的一般是出于网速考虑。
<mirrors>
<mirror>
<id>
maven.net.cn
</id>
<mirrorOf>
central//拦截哪些仓库
</mirrorOf>
<name>
one of the central mirrors in china
</name>
<url>
http://maven.net.cn/content/groups/public/
</url>
</mirror>
</mirrors>
生命周期:内置三个(default
, clean
和 site
)
生命周期是由 一组 有 顺序 的 阶段 构成的一个整体,这么说可能有点绕,那让我们来关注他里面的几个重要的点:
-
一组:指的是可能有多个
-
顺序:指的是按照顺序执行,执行某一个阶段的指令时会依次先执行该阶段之前的指令
-
阶段:指的是具体要执行的内容
依赖( 短路优先、声明优先;排除依赖)
依赖管理
聚合:聚合的优势在于可以在一个地方编译多个 pom 文件
<packaging>pom</packaging>
<modules>
<module>module-1</module>
<module>module-2</module>
<module>module-3</module>
</modules>
继承:跟java类的继承类似,Maven 的继承特性也会继承父pom中的依赖
注意:使用dependencyManagement,可对依赖进行管理。子类只要不引用这个里面写的groupId + artifactId,则不会添 加依赖,这样防止造成重复加了包:如果不使用dependencyManagement,那么只要写了dependency,子pom中会全部 添加到依赖中,而其中很多包可能都用不上。
插件:
插件是 Maven 的核心,所有执行的操作都是基于插件来完成的。
为了让一个插件中可以实现众多的相类似的功能,Maven 为插件设定了目标,一个插件中有可能有多个目标。其实生命周期中的每个阶段都是由插件的一个具体目标来执行的
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.2.1</version>
<!-- 配置执行 -->
<executions>
<execution>
<phase>package</phase> //伴随执行的指令
<goals>
<goal>jar-no-fork</goal>//插件执行的目标对象
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>