1)依赖管理
如上图,HelloFriend项目依赖hello项目,MakeFriend项目依赖HelloFriend项目。
1.1)依赖的范围
- compile
[1]main目录下的Java代码可以访问这个范围的依赖
[2]test目录下的Java代码可以访问这个范围的依赖
[3]部署到Tomcat服务器上运行时要放在WEB-INF的lib目录下
例如:对Hello的依赖。主程序、测试程序和服务器运行时都需要用到。
- test
[1]main目录下的Java代码不能访问这个范围的依赖
[2]test目录下的Java代码可以访问这个范围的依赖
[3]部署到Tomcat服务器上运行时不会放在WEB-INF的lib目录下
例如:对junit的依赖。仅仅是测试程序部分需要。
================
如下图,HelloFriend引用hello项目,当hello项目的pom文件中,junit包的scope设为test后,HelloFriend项目不能访问hello的junit包,可见HelloFriend项目的Dependencies下没有显示junit包
1.2)依赖的原则
- 路径最短者优先
如上图,从MakeFriend项目 到 HelloFriend项目 的路径最短,故优先用 HelloFriend项目的junit包。
- 路径相同时先声明者优先
如上图 先声明HelloFriend 则优先使用HelloFriend模块的junit4.9
2)依赖的排除
太简单,略
3)统一管理目标jar包的版本
4)继承
大意如上2图,细节待补充。
5)聚合
如上图,部分 工程打成的jar包缺失,需要手动重新install。
如上两图,通过聚合 可一次性install所有项目,并处理好依赖关系。
6)打包插件
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<!-- 指定主类 -->
<!-- <mainClass>xxx.xxx.XXX</mainClass>-->
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>