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

springboot,jar,pom · 浏览次数 : 9

小编点评

**生成依赖管理文件(POM)的步骤:** 1. **创建项目目录和结构:** 创建一个名为 `project-name` 的新目录,并将其结构根据项目的实际需求进行设计。 2. **创建 pom.xml 文件:** 创建 `pom.xml` 文件,其中包含项目信息,如版本、名称、描述等。 3. **添加依赖:** 在 `dependencies` 标签中添加第三方包的依赖,使用 `groupId`、`artifactId` 和 `version` 属性来指定。 4. **添加二方包:** 在 `dependencies` 标签中添加二方包的依赖,使用 `groupId`、`artifactId` 和 `version` 属性来指定。 5. **配置依赖管理:** 在 `dependencyManagement` 标签中配置依赖管理,包括版本控制和 scope。 6. **编写依赖管理:** 在 `dependencies` 标签中添加其他依赖项,例如 Spring Boot 版本。 7. **保存和加载 pom.xml:** 保存 `pom.xml` 文件,然后加载它以获取项目中的依赖。 **示例 pom.xml 文件:** ```xml org.springframework.boot spring-boot-starter-web 2.7.5 org.jboss.resteasy resteasy-jaxrs 4.0.0.Beta5 cn.hutool hutool-all 5.8.27 com.lind test-bom 1.0.0 org.springframework.boot spring-boot-starter-web 2.7.5 org.springframework.boot spring-boot-starter-web 2.7.5 cn.hutool hutool-all 5.8.27 ``` **使用说明:** 1. 将 `project-name` 替换为您的项目名称。 2. 将 `dependencies` 中的依赖项添加您的第三方和二方包。 3. 编写 `dependencyManagement` 配置以管理依赖。 4. 在 `build.gradle` 或 `pom.xml` 文件中加载 `pom.xml` 文件。 5. 构建项目以使用依赖。

正文

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

  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,哪种更规范相似的内容:

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

将多个第三方包封装成一个项目后,如果你的目的是让其他开发人员可以直接引用这些依赖,一般来说有两种常见的方式: 打成JAR包:将封装好的项目编译打包成JAR文件,其他开发人员可以将这个JAR文件添加到他们的项目中,并在项目的构建工具(比如Maven)中配置该JAR作为依赖。这样做的好处是简单直接,其他

ElasticSearch 实现分词全文检索 - Java SpringBoot ES 索引操作

//1. 准备索引的 settings Settings.Builder settings = Settings.builder() //2. 准备索引的结构 Mappings XContentBuilder mappings = JsonXContent.contentBuilder() //3. 将 Settings 和 Mappings 封装到一个Request 对象中

SpringBoot实战:Spring Boot接入Security权限认证服务

引言 Spring Security 是一个功能强大且高度可定制的身份验证和访问控制的框架,提供了完善的认证机制和方法级的授权功能,是一个非常优秀的权限管理框架。其核心是一组过滤器链,不同的功能经由不同的过滤器。本文将通过一个案例将 Spring Security 整合到 SpringBoot中,要

SpringBoot实战:轻松实现接口数据脱敏

引言 在现代的互联网应用中,数据安全和隐私保护变得越来越重要。尤其是在接口返回数据时,如何有效地对敏感数据进行脱敏处理,是每个开发者都需要关注的问题。本文将通过一个简单的Spring Boot项目,介绍如何实现接口数据脱敏。 一、接口数据脱敏概述 1.1 接口数据脱敏的定义 接口数据脱敏是指在接口返

利用SpringBoot+rabbitmq 实现邮件异步发送,保证100%投递成功

在之前的文章中,我们详细介绍了 SpringBoot 整合 mail 实现各类邮件的自动推送服务。 但是这类服务通常不稳定,当出现网络异常的时候,会导致邮件推送失败。 本篇文章将介绍另一种高可靠的服务架构,实现邮件 100% 被投递成功。类似的短信自动发送等服务也大体相同。 一、先来一张流程图 本文

SpringBoot彩蛋之定制启动画面

写在前面 在日常开发中,我们经常会看到各种各样的启动画面。例如以下几种 ① spring项目启动画面 ② mybatisplus启动画面 ③若依项目启动画面 还有很多各式各样好看的启动画面,那么怎么定制这些启动画面呢? 一、小试牛刀 ① 新建一个SpringBoot项目 ②在项目的resources

SpringBoot集成Mongodb文档数据库

添加Maven依赖 org.springframework.boot spring-boot-starter-data-mongodb 配置Mongodb连接

Springboot+Shiro+Mybatis+mysql实现权限安全认证

Shiro是Apache 的一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。Shiro 主要分为两个部分就是认证和授权两部分 一、介绍 Subject代表了当前用户的安全操作 SecurityManager:它是Shiro框架的核心,典型的Facade模式,Shiro通过Se

【冷启动#2】实用的springboot tutorial入门demo

跟着官方文档熟悉一遍创建spring工程的步骤 https://spring.io/guides/gs/spring-boot https://juejin.cn/post/7077958723829760008 demo简介 整个demo的预期目标是: 管理一堆玩家的数据,数据库使用的是现成的我们

Springboot整合Apollo

一、Apollo作用 随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、参数的配置、服务器的地址…… 对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制…… 在这样的大环境下,传统的通过配置文件、数据库等方式已经越来越无法满足开发人员对