本文主要是介绍maven-依赖管理-实战篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
上篇文章介绍了依赖,这篇文章介绍下在项目中是怎么应用的。
以 basicInfo 服务为例:
basicinfo-parent pom文件:
<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><parent><groupId>com.dmsdbj.itoo</groupId><artifactId>itoo-root</artifactId><version>1.0.0-SNAPSHOT</version></parent><groupId>com.dmsdbj.itoo</groupId><artifactId>basicInfo-parent</artifactId><version>1.0.0-SNAPSHOT</version><packaging>pom</packaging><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId></dependency><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId></dependency></dependencies><modules><module>basicInfo-api</module><module>basicInfo-service</module><module>basicInfo-web</module></modules></project>
basic-api pom文件
<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><parent><groupId>com.dmsdbj.itoo</groupId><artifactId>basicInfo-parent</artifactId><version>1.0.0-SNAPSHOT</version></parent><groupId>com.dmsdbj.itoo</groupId><artifactId>basicInfo-api</artifactId><version>1.0.0-SNAPSHOT</version><packaging>jar</packaging><dependencies><dependency><groupId>com.dmsdbj.itoo</groupId><artifactId>itoo-tool</artifactId><version>${project.parent.version}</version></dependency><dependency><groupId>javax</groupId><artifactId>javaee-api</artifactId><exclusions><exclusion><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId></exclusion></exclusions></dependency></dependencies>
</project>
<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><parent><groupId>com.dmsdbj.itoo</groupId><artifactId>basicInfo-parent</artifactId><version>1.0.0-SNAPSHOT</version></parent><groupId>com.dmsdbj.itoo</groupId><artifactId>basicInfo-api</artifactId><version>1.0.0-SNAPSHOT</version><packaging>jar</packaging><dependencies><dependency><groupId>com.dmsdbj.itoo</groupId><artifactId>itoo-tool</artifactId><version>${project.parent.version}</version></dependency><dependency><groupId>javax</groupId><artifactId>javaee-api</artifactId><exclusions><exclusion><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId></exclusion></exclusions></dependency></dependencies>
</project>
因为service 的pom 文件中 依赖 了 api 的jar 包,而api 也没有屏蔽传递依赖 ,所以api的中的jar文件 都会 传递 到 service 文件中。
也许大家会奇怪,api 的pom文件中并没有依赖那么多的jar包,为什么basic-api 会传递依赖这么多jar包那? 那是因为 parent 是聚合工程,parent 中的jar包 在 其子工程中都会有。
改进方案:
在 parent 和api 的pom文件中,所有依赖的jar包 都 加上 <scope>provided<scope> 标签,屏蔽 传递依赖。
改进之后的效果图:
小技巧: idea jar 包依赖分析工具
如果没有这个图标-请百度
总结: 大道至简!
这篇关于maven-依赖管理-实战篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!