maven-依赖管理-实战篇

xiaoxiao2021-02-28  97

   上篇文章介绍了依赖,这篇文章介绍下在项目中是怎么应用的。

   以 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>

basicInfo-service pom文件 部分jar包 

<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 包依赖分析工具

如果没有这个图标-请百度

    

  总结: 大道至简!

转载请注明原文地址: https://www.6miu.com/read-70226.html

最新回复(0)