生成项目骨架
1 | mvn archetype:generate |
自动生成符合maven规定的项目框架结构,即:
主代码在 src/main/java目录下;
测试代码在src/main/test目录下;
资源文件在src/main/resources目录下;
在根目录下的pom.xml文件
这些都是在超级pom文件内配置好的,因为每个pom文件都默认继承一个超级pom文件,故默认生成的目录都会按照这个格式。遵照这个约定的好处就是可以较少许多配置,不用手动配置各个路径。(约定优于配置理念)
超级pom的路径在 $MAVEN_HOME/lib/maven-model-builder-x.x.x.jar 中的org/apache/maven/model/pom-4.0.0.xml
依赖范围
依赖调解
- 路径最短者优先原则
- 第一声明者优先原则
e.g : 存在依赖关系A operation-web->trade-service->autopart-service.1.0 和 B operation-web -> autoparts-service.2.0,此时operation-web取的应该是autoparts-service.2.0。
1 mvn dependency:list以上命令可以列出所有已解析的依赖,当存在多个依赖时可用于检查是否解析到正确的依赖。
镜像
修改settings.xml中的mirror标签,可以配置相关的镜像仓库。配合镜像的一些特殊配置,可以用来搭建maven私服。
e.g:
1
2
3
4
5
6
7
8 <!--匹配所有仓库,通常用来搭建私服,构建区域网内的中央仓库-->
<mirrorOf>*</mirrorOf>
<!--匹配不在本机上的仓库-->
<mirrorOf>external:*</mirrorOf>
<!--匹配repo1和repo2-->
<mirrorOf>repo1,repo2</mirrorOf>
<!--匹配所有仓库,除了repo1-->
<mirrorOf>*, !repo1</mirrorOf>
生命周期
- clean生命周期:pre-clean, clean, post-clean
- default生命周期:validate, initialize, … complie, … test-compile, … test, … install, deploy(部分阶段被省略)
- site生命周期:pre-site, site, post-site, site-deploy
绑定插件与生命周期
通常生命周期的每个阶段都会与一个插件的目标进行,e.g: default-clean阶段 默认与maven-complier-plugin的complie进行绑定。没有绑定目标的阶段将不会有实际性的操作。常见的生命周期,maven都会默认绑定了插件。此外,还可以自定义绑定。
e.g:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.1</version>
<executions>
<execution>
<id>attah-source</id>
<phase>verify</phase>
<goals>
<goal>jar-no-fork</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
裁剪反应堆
反应堆指在一个多模块的maven项目中,所有模块组成的构建结构。
可以通过以下命令构建指定的模块:
-am --also-make
构建所列模块和依赖模块-amd --also-make-dependents
同时构建依赖于构建模块的模块- pl --projects
构建指定模块,多个模块用逗号隔开- rf - resume-from
从指定模块恢复反应堆