1、依赖范围:compile,test,provided,runtime,system
2、传递性依赖:A依赖于B,B依赖于C,则A间接依赖于C,A的依赖范围受B和C影响
3、依赖调节原则:当依赖jar包产生重复冲突时,下载jar包路径最近者优先,第一声明者优先
4、可选依赖不会被传递,<optional>true</optional>
5、面向对象设计:单一职责性原则,一个类应该只有一项职责,而不是糅合多个功能;规划maven项目也是如此
6、排除依赖<exclusions><exclusions>...</exclusion></exclusions>
7、maven属性归类依赖:
<properties><springframework.version>2.5.6</springframework.version></properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${springframework.version}</version>
</dependency>
</dependencies>
8、maven仓库布局路径:groupId/artifactId/version/artifactId-version.packaging
9、maven仓库分为本地仓库和远程仓库;远程仓库主要有maven核心自带的中央仓库,以及私有仓库服务器(私服);可以有多个远程仓库,但是只有一个本地仓库;releases和snapshots元素设置发布版构件和快照版构件的下载;设置本地仓库地址使用localRepository元素,设置远程仓库地址:
<repositories>
<repository>
...
</repository>
</repositories>
10、默认仓库目录在.m2/repository下,配置文件settings.xml;
远程仓库认证信息放在settings.xml里面:
<servers>
<server>
<id>...</id>
<username>...</username>
<password>...</password>
</server>
</servers>
11、maven生命周期:clean、default和site
12、maven生命周期和插件互相绑定,完成具体构建任务。maven通过绑定插件完成实际任务。插件仓库:
<pluginRepositories>
<pluginRepository>
<id><name><url><layout>...
</pluginRepository>
</pluginRepositories>
13、maven的聚合特性是为了把项目多个模块一起构建,maven的继承特性则是为了抽取模块中相同的依赖和插件等配置。
聚合中父模块依赖:
<modules>
<module>account-email</module>
<module>account-persist</module>
</modules>
父模块只有pom文件和目录结构,没有src等文件结构;
聚合可以使用父子关系目录结构,平行目录结构;
继承是指子模块继承父模块依赖等配置。
<parent>
<groupId><artifactId><version><relativePath>...
</parent>
14、依赖管理
父模块中:
<dependencyManagement>
<dependencies>...</dependencies>
</dependencyManagement>
可以在父模块中声明依赖版本,子模块中省略版本就可以引入相关依赖,不添加父模块中依赖就不会引入多余依赖。
15、插件管理
父模块中:
<pluginManagement>
<plugins>
...
</plugin>
</pluginManagement>
16、maven默认的清除构建目录,创建目录,编译代码,复制依赖到目标目录,最后打包流程。源码默认目录为src/main/java,编译输出target/classes/,打包方式为jar,包输出目录为target//
17、反应堆:模块构建顺序
18、maven使用约定优于配置
19、Nexus:Maven仓库管理软件(可以下载war包在tomcat里面运行,自己搭建私服)
Nexus内置仓库:group(仓库组),hosted(宿主),proxy(代理)和virtual(虚拟)
使用镜像让maven只使用私服下载依赖包
<mirrors>
<mirror>
<id>...</id>
<name>...</name>
<url>...</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
20、使用maven进行测试:
maven-surefire-plugin测试插件
动态指定运行单元测试的类:$mvn test -Dtest=RandomTest
21、生成测试报告:maven有基本的测试报告,TestNG框架测试报告,JUnit框架也可以打印出测试报告
22、重用测试代码:maven-jar-plugin插件打包测试代码重复使用
23、使用jetty-maven-plugin进行单元测试
24、插件实现自动化热部署
25、Cargo实现自动化部署,可以部署到本地web容器和远程web容器
转载于:https://www.cnblogs.com/agnesFlower/p/10564516.html