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

  1. 打成JAR包:将封装好的项目编译打包成JAR文件,其他开发人员可以将这个JAR文件添加到他们的项目中,并在项目的构建工具(比如Maven)中配置该JAR作为依赖。这样做的好处是简单直接,其他开发人员只需引入JAR包即可使用你封装的功能。

  2. 打成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的形式,引用它们,这样作的好处就是,二方依赖包,只负责引用相同依赖,不与代码耦合,例如:

 <dependency>
<groupId>com.lind</groupId>
<artifactId>test-bom</artifactId>
<version>1.0.0</version>
<type>pom</type>
</dependency>

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

  • pom二方包项目
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
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.lind</groupId>
<artifactId>test-bom</artifactId>
<version>1.0.0</version>
<packaging>pom</packaging>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencyManagement>
<dependencies>
<!-- 三方包包裹 -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>4.0.0.Beta5</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.27</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.32</version>
</dependency>
</dependencies>
</dependencyManagement> <dependencies>
<!-- 三方包包裹 -->
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
</project>

开发人员在真实项目中,按需引用

    <dependencyManagement>
<dependencies>
<!--spring boot 版本-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot-dependencies.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 二方包 -->
<dependency>
<groupId>com.lind</groupId>
<artifactId>test-bom</artifactId>
<version>1.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
</dependency>
</dependencies>

引用后,如图所示,只有两个包在依赖列表中,做到了按需引用

springboot~封装依赖引用包jar还是pom,哪种更规范的更多相关文章

  1. 【pom.xml 依赖】使用net.sf.json-lib-2.4-jdk15.jar所需要的其他依赖架包 以及其一直在pom.xml报错的问题

    特此声明: json-lib-2.4-jdk15.jar仅它本身不够,必须如下的几个依赖架包都有才能使用!!! 首先 将.json-lib-2.4-jdk15.jar以及其相关的依赖架包的正确配置给出 ...

  2. maven打包成第三方jar包且把pom依赖包打入进来

    <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId& ...

  3. maven工程引用外部jar包

    maven工程经常回遇到引用外部jar包,需要先安装在jar包,然后再在工程中pom.xml文件中添加依赖. 示例: 命令行中运行: mvn install:install-file -Dfile=E ...

  4. maven项目引用外部jar包的方法

    问题描述: 有一个java maven web项目,需要引入一个第三方包gdal.jar,但是这个包是自己打包的,在maven中央库里面找不到该包,因此我采用传统的方式,将这个包拷贝到:项目名称\sr ...

  5. Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法

    方案一:用Eclipse自带的Export功能 步骤1:准备主清单文件 “MANIFEST.MF”, 由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目 ...

  6. maven - 引用本地jar,进行jar包移动

    背景: 项目为maven工程,部分jar需要需用项目单独修改的本地jar包. 配置好scope后发现构建后引用的jar没有移动到对应的目录,百度后发现需要配置以下依赖 <plugin> & ...

  7. 有引用外部jar包时(J2SE)生成jar文件

    一.工程没有引用外部jar包时(J2SE) 选中工程---->右键,Export...--->Java--->选择JAR file--->next-->选择jar fil ...

  8. idea引用本地jar包的方法及报错解决

    1 首先将本地jar包打入mvn本地仓库 cmd mvn install:install-file -Dfile=E://xx.jar 本地jar包绝对路径 -DgroupId=com.ccp -Da ...

  9. maven 工程依赖了某个jar包 但还是报java.lang.ClassNotFoundException的问题

    一般出现这种情况,首先看看 pom.xml 文件引用的jar文件有没有损坏.或者下载不完整,打开maven仓库根据依赖地址可以查看. 如果还是出现问题,报 java.lang.ClassNotFoun ...

  10. 使用IDEA导出可运行的jar包,包含引用第三方jar包

    这里我使用的第三方jar包是数据库的JDBC jar包导出案例. 1.创建一个Module,名称为dataBase,在里面我们先创建一个folder用来包含所需要的jar包,命名为lib 2.从外界复 ...

随机推荐

  1. 中间件之Mycat

    一.概念 介绍 Mycat是开源的.活跃的.基于Java语言编写的MySQL数据库中间件.可以像使用mysql一样来使用mycat,对于开发人员来说根本感觉不到mycat的存在 Mycat不负责存储数 ...

  2. VS2019 community版本下载Extension太慢解决方案

    VS2019 community版本下载Extension太慢解决方案 今天在VS2019上更新Live Share拓展时,实在是太慢了,一直卡在如下界面.不过,除了没有进度条和速度很慢,还是可以下载 ...

  3. python flashtext字符串快速替换,自然语言处理加速

    在自然语言处理当中,经常对数据集进行一些数据字符的替换,表情的替换,以便在tokenizer的时候不被识别成[unk],造成信息的缺失 常规方法使用python自带的replace方法实现,但数据量很 ...

  4. c#采用toml做配置文件的坑过

    这几天在玩个程序,突然看到c#采用图toml文件,好用,直观,确实也简单. 不过...... github上示例写的 TOML to TomlTable TOML input file:v Enabl ...

  5. 力扣5(java)-最长回文串(中等)

    题目: 给你一个字符串 s,找到 s 中最长的回文子串. 示例 1: 输入:s = "babad"输出:"bab"解释:"aba" 同样是符 ...

  6. dotnet 使用 NamedPipeClientStream 连接一个不存在管道服务名将不断空跑 CPU 资源

    本文记录一个开发和代码审查过程中,需要关注的细节.在 dotnet 里,在 .NET 6 和以下版本,包括 .NET Framework 版本,使用 NamedPipeClientStream 进行连 ...

  7. 2019-9-27-微软的-P2P-下载方式

    title author date CreateTime categories 微软的 P2P 下载方式 lindexi 2019-09-27 09:44:44 +0800 2019-09-27 09 ...

  8. html+jq实现全国省的单选,弹框输入input

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  9. 一个完整的可以输出移动端当前省市(地理坐标)的html页面

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. Blazor/Hybird 触屏下单程序调优笔记

    环境 Blazor Net8.0 + FreeSql + Bootstrap Blazor 组件 以下都是自己瞎琢磨的和官网资料搬运,肯定有不少错漏和不合理的地方,非常希望各位大佬评论区给我建议和意见 ...