Spring 项目里内建 Gradle 插件-ApiHug准备-工具篇-008

2024-04-12 09:12

本文主要是介绍Spring 项目里内建 Gradle 插件-ApiHug准备-工具篇-008,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  🤗 ApiHug × {Postman|Swagger|Api...} = 快↑ 准√ 省↓

  1. GitHub - apihug/apihug.com: All abou the Apihug   
  2. apihug.com: 有爱,有温度,有质量,有信任
  3. ApiHug - API design Copilot - IntelliJ IDEs Plugin | Marketplace

ApiHug 整个工具链基于 Gradle, 使用 ApiHug 准备工作最先需要学习的就是 gradle. 工欲善其事,必先利其器

ApiHug 核心工具栏  wire + stub 也是 利用 gradle 插件, 给大家提供丝绸般丝滑体验。 

概要

pugin文档源码备注
org.springframework.boot2.7.0DOCopen in new window源码open in new window
io.spring.dependency-management1.0.11.REALEASEDOCopen in new window源码open in new window

Spring 有上面两个在公共库的插件, 一个Gradle插件的开发、发布是个比较冗长的过程,那如果我们在插件的代码编写阶段,总不能修改一点点代码,就发布一个版本,然后重新运用吧?

有人可能会说,那就不发布到maven仓库,而是发布到本地仓库呗,然而这样至多发布时节省一点点时间,仍然太麻烦。

内置

幸好有 buildSrc! 在buildSrc中定义的插件,可以直接在其他module中运用,可以参考spring, spring-boot 中的buildSrcopen in new window逻辑,所有在项目中使用的 org.springframework.boot* 开头插件都是以这样方式提供的。


gradlePlugin {plugins {bomPlugin {id = "org.springframework.boot.bom"implementationClass = "org.springframework.boot.build.bom.BomPlugin"}
}

独立

引用和使用任何第三方插件一样:


plugins {id "org.springframework.boot.bom"id "org.springframework.boot.conventions"id "org.springframework.boot.deployed"
}

即直接apply具体的类,而不是其发布名称,这样的话,不管做什么修改,都能马上体现,而不需要等到重新发布版本。

spring boot 大概提供了10几个代码里面内带的 plugin spring 只扩展了三个: org.springframework.build.api-difforg.springframework.build.compileorg.springframework.build.optional-dependencies

分析个 org.springframework.build.optional.OptionalDependenciesPlugin

spring-boot > OptionalDependenciesPluginopen in new window

spring-framework > OptionalDependenciesPluginopen in new window

两个实现的方式基本一样的 optional


public class OptionalDependenciesPlugin implements Plugin<Project> {/*** Name of the {@code optional} configuration.*/public static final String OPTIONAL_CONFIGURATION_NAME = "optional";@Overridepublic void apply(Project project) {Configuration optional = project.getConfigurations().create("optional");optional.setCanBeConsumed(false);optional.setCanBeResolved(false);project.getPlugins().withType(JavaPlugin.class, (javaPlugin) -> {SourceSetContainer sourceSets = project.getExtensions().getByType(JavaPluginExtension.class).getSourceSets();sourceSets.all((sourceSet) -> {project.getConfigurations().getByName(sourceSet.getCompileClasspathConfigurationName()).extendsFrom(optional);project.getConfigurations().getByName(sourceSet.getRuntimeClasspathConfigurationName()).extendsFrom(optional);});});}}

optional 作为 compileOnly 一个替代, 在 compile 和 runtime classpath 里面但是不会增加到 依赖里面。 但是 compileOnly 其实会导致测试的 classpath 无法满足, 所以你会看到比较笨的解决方案:

dependencies {compileOnly "org.slf4j:slf4j-api"testImplementation "org.slf4j:slf4j-api"
}

我们

api-hug-contact

这篇关于Spring 项目里内建 Gradle 插件-ApiHug准备-工具篇-008的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/896710

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p