关于spring-cloud:第十五篇-Maven-依赖管理之Spring-Cloud直播商城-b2b2c电子商务技术总结

59次阅读

共计 3423 个字符,预计需要花费 9 分钟才能阅读完成。

Maven 依赖治理
Maven 一个外围的个性就是依赖治理。当咱们解决多模块的我的项目(蕴含成千盈百个模块或者子项目),模块间的依赖关系就变得非常复杂,治理也变得很艰难。针对此种情景,Maven 提供了一种高度管制的办法。

可传递性依赖发现
一种相当常见的状况,比如说 A 依赖于其余库 B。如果,另外一个我的项目 C 想要应用 A,那么 C 我的项目也须要应用库 B。

Maven 能够防止去搜寻所有所需库的需要。Maven 通过读取我的项目文件(pom.xml),找出它们我的项目之间的依赖关系。

咱们须要做的只是在每个我的项目的 pom 中定义好间接的依赖关系。其余的事件 Maven 会帮咱们搞定。

通过可传递性的依赖,所有被蕴含的库的图形会疾速的增长。当有反复库时,可能呈现的情景将会持续上升。Maven 提供一些性能来管制可传递的依赖的水平。依赖范畴
传递依赖发现能够通过应用如下的依赖范畴来失去限度:依赖治理
通常状况下,在一个共通的我的项目下,有一系列的我的项目。在这种状况下,咱们能够创立一个公共依赖的 pom 文件,该 pom 蕴含所有的公共的依赖关系,咱们称其为其余子项目 pom 的 pom 父。接下来的一个例子能够帮忙你更好的了解这个概念。

接下来是下面依赖图的详情阐明:

App-UI-WAR 依赖于 App-Core-lib 和 App-Data-lib。

Root 是 App-Core-lib 和 App-Data-lib 的父我的项目。

Root 在它的依赖局部定义了 Lib1、lib2 和 Lib3 作为依赖。

App-UI-WAR 的 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.companyname.groupname</groupId>
      <artifactId>App-UI-WAR</artifactId>
      <version>1.0</version>
      <packaging>war</packaging>
      <dependencies>
         <dependency>
            <groupId>com.companyname.groupname</groupId>
            <artifactId>App-Core-lib</artifactId>
            <version>1.0</version>
         </dependency>
      </dependencies>  
      <dependencies>
         <dependency>
            <groupId>com.companyname.groupname</groupId>
            <artifactId>App-Data-lib</artifactId>
            <version>1.0</version>
         </dependency>
      </dependencies>  
</project>

App-Core-lib 的 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">
      <parent>
         <artifactId>Root</artifactId>
         <groupId>com.companyname.groupname</groupId>
         <version>1.0</version>
      </parent>
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.companyname.groupname</groupId>
      <artifactId>App-Core-lib</artifactId>
      <version>1.0</version> 
      <packaging>jar</packaging>
</project>

App-Data-lib 的 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">
      <parent>
         <artifactId>Root</artifactId>
         <groupId>com.companyname.groupname</groupId>
         <version>1.0</version>
      </parent>
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.companyname.groupname</groupId>
      <artifactId>App-Data-lib</artifactId>
      <version>1.0</version>   
      <packaging>jar</packaging>
</project>

Root 的 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.companyname.groupname</groupId>
      <artifactId>Root</artifactId>
      <version>1.0</version>
      <packaging>pom</packaging>
      <dependencies>
         <dependency>
            <groupId>com.companyname.groupname1</groupId>
            <artifactId>Lib1</artifactId>
            <version>1.0</version>
         </dependency>
      </dependencies>  
      <dependencies>
         <dependency>
            <groupId>com.companyname.groupname2</groupId>
            <artifactId>Lib2</artifactId>
            <version>2.1</version>
         </dependency>
      </dependencies>  
      <dependencies>
         <dependency>
            <groupId>com.companyname.groupname3</groupId>
            <artifactId>Lib3</artifactId>
            <version>1.1</version>
         </dependency>
      </dependencies>  
</project>

当初当咱们构建 App-UI-WAR 我的项目时,Maven 将通过遍历依赖关系图找到所有的依赖关系,并且构建该应用程序。

通过下面的例子,咱们能够学习到以下要害概念:

公共的依赖能够应用 pom 父的概念被对立放在一起。App-Data-lib 和 App-Core-lib 我的项目的依赖在 Root 我的项目里列举了进去(参考 Root 的包类型,它是一个 POM).
没有必要在 App-UI-W 里申明 Lib1, lib2, Lib3 是它的依赖。Maven 通过应用可传递的依赖机制来实现该细节。

正文完
 0