springboot~封装依靠引用包jar还是pom,哪种更规范

一给  金牌会员 | 2024-5-28 13:51:04 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 857|帖子 857|积分 2571

将多个第三方包封装成一个项目后,如果你的目的是让其他开发人员可以直接引用这些依靠,一般来说有两种常见的方式:

  • 打成JAR包:将封装好的项目编译打包成JAR文件,其他开发人员可以将这个JAR文件添加到他们的项目中,并在项目的构建工具(比如Maven)中设置该JAR作为依靠。如许做的好处是简单直接,其他开发人员只需引入JAR包即可利用你封装的功能。
  • 打成POM包:将封装好的项目发布到仓库中,并提供一个POM文件,其他开发人员可以通过在他们的项目中引入这个POM文件来获取你封装的依靠。这种方式更符合Maven的依靠管理机制,能够更好地管理和控制依靠版本、传递性依靠等。
综合考虑,如果你的封装项目只包含依靠的JAR文件,并没有其他必要特别设置的内容,那么直接打成JAR包大概更为简单;如果你希望提供更加灵活和规范的依靠管理方式,可以考虑打成POM包并发布到仓库中。
一,二,三方包

在软件开发中,通常我们将依靠的包分为三方包(Third-party package)、二方包(Second-party package)和一方包(First-party package)。

  • 一方包(First-party package):指的是由自己或者所在团队开发的包,也可以理解为自己项目内部的代码和库。
  • 二方包(Second-party package):通常指的是公司内部共享的、被多个团队或项目利用的包,也可以称为内部共享库。这些包不是公开发布到外部仓库的,而是在构造内部进行管理和分享。
  • 三方包(Third-party package):指的是外部开发者或构造开发并发布的可供公开访问和利用的包,比如常见的Maven中央仓库、JCenter等。开发人员可以通过引入这些第三方包来实现功能扩展或依靠管理。
根据以上界说,如果你封装的项目中包含的是第三方包(即外部开发者或构造开发的包),那么你可以选择将其打成JAR包或POM包提供给其他开发人员利用;如果封装的是公司内部共享的包(二方包),则可以考虑将其作为内部库进行管理和分享。
希望以上解释对你有所帮助,如果另有其他题目,请随时告诉我!
pom更规范

当我们希望将hutool,lombok,jax-rs等包,如果不希望别的开发人员再引用这些包,而通过一个二方包引用它们,可以将这些三方包写到pom里,比方

然后,开发人员在自己项目中,可以直接通过type为pom的情势,引用它们,如许作的好处就是,二方依靠包,只负责引用相同依靠,不与代码耦合,比方:
  1. <dependency>
  2.       <groupId>com.lind</groupId>
  3.       <artifactId>test-bom</artifactId>
  4.       <version>1.0.0</version>
  5.       <type>pom</type>
  6.   </dependency>
复制代码

如果你要利用的二方包里的三方包,只是某些必要,也可以在dependencyManagement中进行导入,通过按需进行真实的引用即可,这时再引用时,则不必要标识version属性了,比方org.springframework.boot的spring-boot-dependencies就是做这事的,帮助spring管理相关依靠包的版本。

  • pom二方包项目
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.          xmlns="http://maven.apache.org/POM/4.0.0"
  4.          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.     <modelVersion>4.0.0</modelVersion>
  6.     <groupId>com.lind</groupId>
  7.     <artifactId>test-bom</artifactId>
  8.     <version>1.0.0</version>
  9.    <packaging>pom</packaging>
  10.     <properties>
  11.         <maven.compiler.source>8</maven.compiler.source>
  12.         <maven.compiler.target>8</maven.compiler.target>
  13.         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  14.     </properties>
  15.     <dependencyManagement>
  16.         <dependencies>
  17.             
  18.             <dependency>
  19.                 <groupId>org.jboss.resteasy</groupId>
  20.                 <artifactId>resteasy-jaxrs</artifactId>
  21.                 <version>4.0.0.Beta5</version>
  22.             </dependency>
  23.             <dependency>
  24.                 <groupId>cn.hutool</groupId>
  25.                 <artifactId>hutool-all</artifactId>
  26.                 <version>5.8.27</version>
  27.             </dependency>
  28.             <dependency>
  29.                 <groupId>org.projectlombok</groupId>
  30.                 <artifactId>lombok</artifactId>
  31.                 <version>1.18.32</version>
  32.             </dependency>
  33.         </dependencies>
  34.     </dependencyManagement>
  35.     <dependencies>
  36.         
  37.         <dependency>
  38.             <groupId>org.jboss.resteasy</groupId>
  39.             <artifactId>resteasy-jaxrs</artifactId>
  40.         </dependency>
  41.         <dependency>
  42.             <groupId>cn.hutool</groupId>
  43.             <artifactId>hutool-all</artifactId>
  44.         </dependency>
  45.         <dependency>
  46.             <groupId>org.projectlombok</groupId>
  47.             <artifactId>lombok</artifactId>
  48.         </dependency>
  49.     </dependencies>
  50. </project>
复制代码
开发人员在真实项目中,按需引用
  1.     <dependencyManagement>
  2.         <dependencies>
  3.             
  4.             <dependency>
  5.                 <groupId>org.springframework.boot</groupId>
  6.                 <artifactId>spring-boot-dependencies</artifactId>
  7.                 <version>${spring-boot-dependencies.version}</version>
  8.                 <type>pom</type>
  9.                 <scope>import</scope>
  10.             </dependency>
  11.             
  12.             <dependency>
  13.                 <groupId>com.lind</groupId>
  14.                 <artifactId>test-bom</artifactId>
  15.                 <version>1.0.0</version>
  16.                 <type>pom</type>
  17.                 <scope>import</scope>
  18.             </dependency>
  19.         </dependencies>
  20.     </dependencyManagement>
  21.   <dependencies>
  22.         <dependency>
  23.             <groupId>org.springframework.boot</groupId>
  24.             <artifactId>spring-boot-starter-web</artifactId>
  25.         </dependency>
  26.         <dependency>
  27.             <groupId>cn.hutool</groupId>
  28.             <artifactId>hutool-all</artifactId>
  29.         </dependency>
  30.     </dependencies>
复制代码
引用后,如图所示,只有两个包在依靠列表中,做到了按需引用


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

一给

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表