首页 > 其他分享 >无涯教程-Maven - 管理依赖项

无涯教程-Maven - 管理依赖项

时间:2024-01-18 23:32:05浏览次数:29  
标签:教程 依赖 1.0 lib companyname App 无涯 Maven com

Maven的核心功能之一是依赖管理。一旦无涯教程要处理多模块项目(由数百个模块/子项目组成),管理依赖项将是一项艰巨的任务。Maven提供了高度的控制权来管理这种情况。

依存关系

当一个库(如A)依赖于另一个库(如B)时,通常是一种情况。如果另一个项目C要使用A,那么该项目也需要使用库B。

Maven帮助避免发现所有所需库的此类要求。 Maven通过读取依赖项的项目文件(pom.xml),弄清它们的依赖项等等来做到这一点。

只需要在每个项目pom中定义直接依赖项。 Maven自动处理其余部分。

依赖范围

可以使用各种依赖关系范围来限制传递依赖关系的发现,如下所述。

Sr.No. Scope & Remark
1

compile

此范围指示依赖项在项目的类路径中可用。这是默认范围。

2

provided

此范围指示依赖项将在运行时由JDK或Web服务器/容器提供。

3

runtime

此作用域指示依赖关系对于编译不是必需的,但在执行过程中是必需的。

4

test

此范围表明依赖性仅可用于测试编译和执行阶段。

5

system

此范围表明您必须提供系统路径。

6

import

仅当依赖项为pom类型时,才使用此范围。此范围指示应使用该POM的<dependencyManagement>部分中的依赖项替换指定的POM。

依赖管理

通常,在一个公共项目下有一组项目。在这种情况下,可以创建具有所有公共依赖项的公共pom,然后将其作为子项目的pom的父级。以下示例将帮助您理解此概念。

无涯教程-Maven - 管理依赖项_maven

以下是上面的依赖图的细节-

  • App-UI-WAR依赖于App-Core-lib和App-Data-lib。
  • Root是App-Core-lib和App-Data-lib的父代。
  • 根在其依赖项部分中将Lib1,lib2,Lib3定义为依赖项。

App-UI-WAR

<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

<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

<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

<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 项目中列出。

  • 在App-UI-WAR中无需将Lib1,lib2,Lib3指定为依赖项。 Maven使用传递依赖机制来管理这样的细节。

参考链接

https://www.learnfk.com/maven/maven-manage-dependencies.html

标签:教程,依赖,1.0,lib,companyname,App,无涯,Maven,com
From: https://blog.51cto.com/u_14033984/9321187

相关文章

  • 无涯教程-Maven - 构建自动化
    BuildAutomation定义了一种方案,一旦项目构建成功完成,相关项目的构建过程就会开始,以确保相关项目稳定。考虑一个团队正在开发项目bus-core-api,另外两个项目app-web-ui和app-desktop-ui依赖。app-web-ui项目正在使用bus-core-api项目的1.0-SNAPSHOT。<projectxmlns......
  • 无涯教程-SQLite - 连接Perl
    在本章中,您将学习如何在Perl程序中使用SQLite。安装可以使用PerlDBI模块将SQLite3与Perl集成,该模块是Perl编程语言的数据库访问模块。它定义了一组提供标准数据库接口的方法,变量和约定。以下是在Linux/UNIX计算机上安装DBI模块的简单步骤-$wgethttp://search.cpan.org/CPAN......
  • DrawIO安装及基本使用教程
    1、DrawIO简介DrawIO是一款开源免费且功能强大的绘图工具,可以用于绘制流程图、组织结构图、网络图、UML图等各种类型的图表;DrawIO支持多种文件格式,包括XML、PNG、SVG等,方便用户保存和分享图表;相比起客户端体积庞大的Visio和有免费图表文件数量限制的在线绘图工具Pro......
  • C# 数据类型与类型转换:包含教程与示例
    C#数据类型C#中的变量必须是指定的数据类型:intmyNum=5;//整数(整数)doublemyDoubleNum=5.99D;//浮点数charmyLetter='D';//字符boolmyBool=true;//布尔stringmyText="Hello";//字符串数据类型指定了变量值的......
  • 无涯教程-SQLite - 连接PHP
    在本章中,您将学习如何在PHP程序中使用SQLite。安装从PHP5.3.0起默认启用SQLite3扩展。可以在编译时使用-without-sqlite3禁用它。Windows用户必须启用php_sqlite3.dll才能使用此扩展名。从PHP5.3.0开始,此DLL包含在Windows的PHP发行版中。有关详细的安装说明,请查看无涯教程......
  • C# 数据类型与类型转换:包含教程与示例
    C#数据类型C#中的变量必须是指定的数据类型:intmyNum=5;//整数(整数)doublemyDoubleNum=5.99D;//浮点数charmyLetter='D';//字符boolmyBool=true;//布尔stringmyText="Hello";//字符串数据类型指定了变量值......
  • 无涯教程-SQLite - Autoincrement(自增)
    SQLiteAUTOINCREMENT是用于自动递增表中字段值的关键字,只能与INTEGER字段一起使用。AUTOINCREMENT-语法AUTOINCREMENT关键字的基本用法如下-CREATETABLEtable_name(column1INTEGERAUTOINCREMENT,column2datatype,column3datatype,.....colum......
  • 克魔助手工具详解、数据包抓取分析、使用教程
    摘要本文介绍了克魔助手工具的界面和功能,包括数据包的捕获和分析,以及抓包过滤器的使用方法。同时提供了一些代码案例演示,帮助读者更好地理解和使用该工具。引言克魔助手是一款功能强大的网络抓包工具,可以帮助开发人员进行网络数据包的捕获和分析。它提供了直观的界面和丰富的功......
  • 克魔助手抓包教程:网络数据包分析利器
    摘要本文详细介绍了克魔助手(Komoxo)的下载安装、抓包示例、过滤器使用以及TCP三次握手分析等内容。通过丰富的代码案例演示和详细的操作步骤,帮助读者快速掌握克魔助手的使用方法。引言克魔助手是一款流行的网络封包分析软件,广泛应用于开发测试过程中的网络数据包定位与分析。本......
  • Zoho 的POP、IMAP 和SMTP 设置教程,简单好用
    随着云计算技术的不断发展,越来越多的企业和个人选择使用云端服务来管理和存储电子邮件。Zoho作为一家领先的云服务提供商,其邮件服务备受青睐。本文将介绍如何使用Zoho的POP、IMAP和SMTP设置,并展示其简单而高效的操作方式。1.ZohoSMTP简介ZohoSMTP,即简单邮件传输协议,是一种用于在......