• Springboot-自定义Spring Boot Starter并推送到远端公服


    目录

    一、新建项目,完善pom文件

    二、编写业务逻辑

    三、编写自动配置类AutoConfig 

    四、编写spring.factories文件加载自动配置类

    五、maven打包

    六、推送到远端仓库,使用JitPack

    七、使用案例

    八、相关问题


    一、新建项目,完善pom文件

    1. "1.0" encoding="UTF-8"?>
    2. "http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. 4.0.0
    5. org.springframework.boot
    6. spring-boot-starter-parent
    7. 2.6.11
    8. org.meng
    9. tools-spring-boot-starter
    10. v1.0.0
    11. tools
    12. tools
    13. 1.8
    14. org.springframework.boot
    15. spring-boot-autoconfigure
    16. org.springframework.boot
    17. spring-boot-configuration-processor
    18. true
    19. org.springframework.boot
    20. spring-boot-maven-plugin
    21. exec

     PS:打包时需要注意一下,SpringBoot项目打包的JAR是可执行JAR,它的类放在BOOT-INF目录下,如果直接作为其他项目的依赖,会找不到类,可以通过修改pom文件来解决。

    二、编写业务逻辑

    1. package org.meng.tools.service;
    2. import org.meng.tools.utils.MD5Util;
    3. /**
    4. * @Description: MD5Service
    5. * @create by meng on 17:10 2022/9/2
    6. */
    7. public class MD5Service {
    8. public String getMD5(String input) {
    9. return MD5Util.getMD5(input.getBytes());
    10. }
    11. }
    1. package org.meng.tools.utils;
    2. /**
    3. * @Description: MD5加密
    4. * @create by meng on 17:09 2022/9/2
    5. */
    6. public class MD5Util {
    7. public static String getMD5(String source) {
    8. return getMD5(source.getBytes());
    9. }
    10. public static String getMD5(byte[] source) {
    11. String s = null;
    12. char hexDigits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
    13. try {
    14. java.security.MessageDigest md = java.security.MessageDigest.getInstance("MD5");
    15. byte tmp[];
    16. synchronized (MD5Util.class) {
    17. md.update(source);
    18. tmp = md.digest();
    19. }
    20. char str[] = new char[16 * 2];
    21. int k = 0;
    22. for (int i = 0; i < 16; i++) {
    23. byte byte0 = tmp[i];
    24. str[k++] = hexDigits[byte0 >>> 4 & 0xf];
    25. str[k++] = hexDigits[byte0 & 0xf];
    26. }
    27. s = new String(str);
    28. } catch (Exception e) {
    29. e.printStackTrace();
    30. }
    31. return s;
    32. }
    33. }

    三、编写自动配置类AutoConfig 

    1. package org.meng.tools.config;
    2. import org.meng.tools.service.MD5Service;
    3. import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
    4. import org.springframework.context.annotation.Bean;
    5. import org.springframework.context.annotation.Configuration;
    6. /**
    7. * @Description: AutoConfiguration
    8. * @create by meng on 17:11 2022/9/2
    9. */
    10. @Configuration
    11. @ConditionalOnClass(MD5Service.class)
    12. public class AutoConfiguration {
    13. @Bean
    14. MD5Service md5Service() {
    15. return new MD5Service();
    16. }
    17. }

    四、编写spring.factories文件加载自动配置类

    在resources下新建META-INF文件夹,然后创建spring.factories文件

    在该文件中加入如下配置

    1. org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
    2. org.meng.tools.config.AutoConfiguration

     

    五、maven打包

    同一个环境下的maven,可提供给其他项目使用

    mvn clean install

    pom文件引入

    1. org.meng
    2. tools-spring-boot-starter
    3. v1.0.0

    六、推送到远端仓库,使用JitPack

    项目上传到GitHub,并创建版本

     JitPack链接:JitPack | Publish JVM and Android libraries

    Look up 自己项目的GitHub地址

    字段含义
    version指你在github上发布项目时候填写的release tag
    logjitpack编译你的项目生成的日志,绿色表示ok,红色表示编译错误
    status表示当前项目的状态,如果编译通过显示的是绿色的get it,表示可以使用,如果编译有问题,那么则显示report,你可以点击report去提交你的log并描述一下你的问题,jitpack会给你答复

     pom文件引入

    1. <id>jitpack.io
    2. https://jitpack.io
    3. com.github.Vmetrio
    4. tools
    5. v1.0.0

     

    七、使用案例

    GitHub项目地址:GitHub - Vmetrio/tools: Spring Boot Starter

    八、相关问题

    maven报错

    Cannot resolve com.github.xxx

     在当前项目的maven对应的 setting.xml 中,修改一下镜像的配置

    *,!jitpack.io

     

  • 相关阅读:
    c语言 --- 分支结构
    Linux命令(99)之rz
    目前世界上有多少种编程语言
    R语言修改dataframe数据列的名称:使用dplyr包的rename函数修改列名、使用colnmaes函数修改列名、在数据筛选的时候重命名列名
    【算法总结】归并排序专题(刷题有感)
    CSDN竞赛4期题解
    R语言中的函数26:polyroot多项式求根函数
    SPA项目开发之登录注册
    教你复制大量文件,保存到多个文件夹中
    分布式点函数
  • 原文地址:https://blog.csdn.net/W_Meng_H/article/details/126682020