背景:每个项目如果都有自己的service,vo,util等,就会造成代码的冗余(难免会有重复的逻辑),使用maven的分模块开发则可以解决这个问题。
实战:
创建了两个项目:fanxing,fanxing-service两个项目,fanxing依赖了fanxing-service,fanxing的pom.xml配置如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.weiwei.fanxing</groupId>
<artifactId>fanxing</artifactId>
<version>0.0.1</version>
<packaging>jar</packaging>
<name>fanxing</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.weiwei.service.fanxing</groupId>
<artifactId>fanxing-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
可以看到,fanxing依赖的包不是个jar包,是因为maven多模块开发,dependency默认是先从当前的workspase开始找,如下图发现找到了则显示成包的形式。
我们把fanxing-service项目close,则找不到了。
如果还希望能找到,怎么做呢?答案是对fanxing-service进行打包:
运行run as --> maven install,检查maven依赖:发现生成了包。
再看下项目(fanxing-service被open了):发现依赖仍然是包的形式。
再次关闭fanxing-service:发现不再是找不到包了,而是使用了fanxing-service刚才打好的jar包。
小结:可见,dependency的包查找顺序为:
- 首先去当前workspace查找,找到了则显示包;
- 第一步没有找到,会去本地的maven仓库去找jar包,找到了则显示jar包。