手撸一个Spring Boot Starter并上传到Maven中央仓库

手撸一个Spring Boot Starter并上传到Maven中央仓库,可以大致分成以下步骤:

一、准备工作

1. 创建一个Maven项目

在本地创建一个Maven项目,包含一个POM文件和一个src目录。可以使用Eclipse、IntelliJ IDEA等开发工具,也可以手工创建。

2. 引入相关依赖

在POM文件中引入Spring Boot和相关依赖,并指定版本号,例如:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.4</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

3. 定义Starter核心类

定义一个类作为Starter的核心类,该类通常实现了Spring Boot中AutoConfiguration接口,例如:

@Configuration
@EnableConfigurationProperties(MyProperties.class)
@ConditionalOnClass(MyService.class)
@EnableConfigurationProperties(MyProperties.class)
public class MyAutoConfiguration {

    @Autowired
    private MyProperties myProperties;

    @Bean
    @ConditionalOnMissingBean
    public MyService myService() {
        return new MyService(myProperties.getName());
    }

}

二、创建Starter所需的资源

1.创建application.properties

在资源目录src/main/resources下创建application.properties文件,该文件用于定义Starter所需的配置信息,例如:

my.name=default_value

2.创建README.md

在项目根目录下创建README.md文件,用于说明该Starter的使用方式、功能等信息。

三、测试Starter

1. 创建测试项目

在本地创建一个测试项目,引入刚才创建的Starter,并写一个简单的测试类,例如:

@SpringBootTest
class MyApplicationTests {

    @Autowired
    private MyService myService;

    @Test
    void contextLoads() {
        assertNotNull(myService);
    }

}

2. 执行测试

运行测试类,查看是否能够正常加载配置文件,并注入MyService。

四、打包并上传到Maven中央仓库

1. 打包

执行mvn clean install命令,将Starter打包成jar包。

2. 上传至Maven中央仓库

$ mvn deploy -Prelease -DskipTests
  • 执行Staging-RepoClose按钮,等待审核通过之后点击Release按钮。

至此,手撸的Spring Boot Starter已经成功上传至Maven中央仓库,并可以作为依赖被其他项目引用使用。

示例一:MyTranslatorStarter

以一个简单的示例—翻译器为例,手撸一个Spring Boot Starter,并上传到Maven中央仓库。

  1. 创建Maven项目
$ mvn archetype:generate -DgroupId=com.example -DartifactId=my-translator-starter -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  1. 引入依赖
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.4</version>
    <type>pom</type>
    <scope>import</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>
  1. 创建核心类
@Configuration
@EnableConfigurationProperties(MyTranslatorProperties.class)
@EnableAutoConfiguration
public class MyTranslatorAutoConfiguration {

    @Autowired
    private MyTranslatorProperties myTranslatorProperties;

    @Bean
    @ConditionalOnMissingBean
    public Translator translator() {
        return new Translator(myTranslatorProperties.getFrom(), myTranslatorProperties.getTo());
    }
}
  1. 创建配置文件

在resources目录下创建application.properties文件

my.translator.from=en
my.translator.to=zh
  1. 创建测试类
@SpringBootTest
class MyTranslatorStarterApplicationTests {

    @Autowired
    private Translator translator;

    @Test
    void contextLoads() {
        assertNotNull(translator);
        assertEquals("你好,世界!", translator.translate("Hello, World!"));
    }

}
  1. 打包并上传至Maven中央仓库

  2. 在项目中引入该Starter,并使用

在pom.xml中引入该Starter

<dependency>
    <groupId>com.example</groupId>
    <artifactId>my-translator-starter</artifactId>
    <version>1.0.0</version>
</dependency>

在main方法中使用

@SpringBootApplication
public class DemoApplication {

    @Autowired
    private Translator translator;

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @GetMapping("/hello")
    public String hello(@RequestParam("word") String word) {
        return translator.translate(word);
    }
}

现在运行该程序,并打开浏览器访问
http://localhost:8080/hello?word=Hello,%20World!

你将会看到:“你好,世界!”几个汉字。

示例二:MyDockerStarter

以Docker的Java API-kit为例实现一个Starter,支持Java应用创建、打架docker镜像、上传至容器仓库等操作。

  1. 创建Maven项目
$ mvn archetype:generate -DgroupId=com.example -DartifactId=my-docker-starter -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
  1. 引入依赖
<dependency>
    <groupId>com.github.docker-java</groupId>
    <artifactId>docker-java-core</artifactId>
    <version>3.2.5</version>
</dependency>
<dependency>
    <groupId>com.github.docker-java</groupId>
    <artifactId>docker-java</artifactId>
    <version>3.2.5</version>
</dependency>
  1. 创建核心类
@Configuration
public class DockerAutoConfiguration {

    @Value("${docker.registry.url}")
    private String registryUrl;

    @Value("${docker.registry.username}")
    private String registryUsername;

    @Value("${docker.registry.password}")
    private String registryPassword;

    @Autowired
    private DockerClient dockerClient;

    @Bean
    public DockerUtil dockerUtil() {
        return new DockerUtil(dockerClient, registryUrl, registryUsername, registryPassword);
    }

    @Bean
    @ConditionalOnMissingBean
    public DockerClient dockerClient() {
        DefaultDockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder().build();
        return DockerClientBuilder.getInstance(config).build();
    }

}
  1. 创建配置文件

在resources目录下创建application.properties文件,并填写配置信息

docker.registry.url=https://hub.docker.com/v2
docker.registry.username=MyUserName
docker.registry.password=MyPassword
  1. 创建测试类

详见:https://github.com/malathion/my-docker-starter/blob/main/src/test/java/com/example/DockerStarterApplicationTests.java

  1. 打包并上传至Maven中央仓库

  2. 在项目中引入该Starter,并使用

在pom.xml中引入该Starter

<dependency>
    <groupId>com.example</groupId>
    <artifactId>my-docker-starter</artifactId>
    <version>1.0.0</version>
</dependency>
@Autowired
private DockerUtil dockerUtil;

@PostMapping("/upload/image/{imageName}")
public void buildAndPushImage(@PathVariable("imageName") String imageName,
        @RequestParam("dockerfile") String dockerfile,
        @RequestParam("buildpath") String buildpath,
        @RequestParam(name = "tag", defaultValue = "latest") String tag) {
    dockerUtil.buildAndPushImage(imageName, tag, dockerfile, Paths.get(buildpath));
}

至此,一个简单的Java应用就可以被打包成docker镜像,并上传至容器仓库了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:手撸一个Spring Boot Starter并上传到Maven中央仓库 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • tomcat部署java web项目遇到的问题及解决方法

    Tomcat部署Java Web项目遇到的问题及解决方法 Tomcat是非常常用的Java Web服务器,但在部署Java Web项目时,也经常会遇到一些问题。本篇攻略将讲解一些可能遇到的问题及解决方法,希望对大家有所帮助。 问题一:Tomcat启动出错,指定端口已被占用 在启动Tomcat时,可能会遇到指定的端口已被占用的情况。这时候,需要找到占用该端口的…

    Java 2023年6月2日
    00
  • springboot的java配置方式(实例讲解)

    下面给出SpringBoot的Java配置方式的详细攻略: 1. 什么是Java配置方式? SpringBoot提供了三种配置方式:XML配置方式、注解配置方式和Java配置方式。Java配置方式是一种纯粹的编程式的方式,通过Java类的方式来完成Bean的配置,相比于XML和注解更加灵活。Java配置方式的主要思想就是用一个Java类替代了XML配置文件或…

    Java 2023年5月15日
    00
  • 一个牛人给Java初学者的建议(必看篇)

    一个牛人给Java初学者的建议(必看篇)攻略详解 建议1:学好基础知识 Java是一门面向对象的编程语言,因此学好面向对象编程的思想是Java入门的基础。学习面向对象编程,要掌握类、对象、继承、封装、多态等基本概念。 同时,Java还有很多重要的基础知识,比如数据类型、控制语句、循环结构、数组、接口、异常处理等,这些知识点也需要熟练掌握。初学者可以通过阅读教…

    Java 2023年5月20日
    00
  • 使用Spirng Boot Admin监控Spring Cloud应用项目

    下面是使用Spring Boot Admin监控Spring Cloud应用项目的完整攻略: 1. 安装和配置Spring Boot Admin 首先,需要在Spring Boot应用项目中添加相关依赖,以便于引入Spring Boot Admin。在pom.xml中加入以下内容: <dependency> <groupId>de.c…

    Java 2023年5月20日
    00
  • php 什么是PEAR?

    PHP 什么是PEAR? PEAR(PHP Extension and Application Repository)是 PHP 的扩展与应用程序仓库,是一个官方的、由 PHP 社区运行的开源项目,旨在为 PHP 开发人员提供高质量的可重用代码和可重用组件。PEAR 从软件设计的角度出发,提倡“以面向对象方式设计,尽可能复用已有的代码片段” 的编码风格,简化…

    Java 2023年6月15日
    00
  • Java连接MySQL数据库实例

    下面我将为大家详细讲解Java连接MySQL数据库实例的完整攻略。主要分为以下步骤: 步骤一:下载安装MySQL 首先需要下载并安装MySQL数据库,可以通过官网下载及安装。安装完成后,需要在MySQL中创建一个数据库及数据表。具体操作如下:1. 进入MySQL命令行客户端2. 创建一个数据库:CREATE DATABASE database_name;3.…

    Java 2023年5月19日
    00
  • day01-项目介绍&功能实现

    项目介绍&功能实现 1.项目介绍&环境搭建 一个以社交平台为核心的轻电商项目,功能如下: 短信登录、商户查询缓存、优惠券秒杀、达人探店、好友关注、附近的商户、用户签到、UV统计 1.1项目架构 1.2项目环境搭建 1.2.1后端项目搭建 mysql的版本采用5.7及以上版本 (1)首先创建数据库,需要创建的表有: tb_user:用户表 tb…

    Java 2023年4月19日
    00
  • Gradle使用Maven仓库的方法

    Gradle是一种基于Apache Maven的自动化构建工具,支持本地构建和云构建,同时允许Java和Kotlin开发人员使用Groovy语言编写脚本。Gradle的构建流程通常包括彼此依赖的模块和库的下载、编译、打包等步骤,这些操作需要使用到各种不同的依赖库,其中Maven仓库是最常用的一种,本文将详细讲解如何使用Maven仓库来管理Gradle的构建依…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部