发布DDD脚手架到Maven仓库,IntelliJ IDEA 配置一下即可使用

news2024/11/15 8:30:39

这篇文章将帮助粉丝伙伴们更高效地利用小傅哥构建的DDD(领域驱动设计)脚手架,搭建工程项目,增强使用的便捷性。让👬🏻兄弟们直接在 IntelliJ IDEA 配置个在线的链接,就能直接用上这款脚手架!—— 你就说猛不猛!🤨

那小傅哥搞的这个在线版脚手架是怎么做到的呢? 🤔 想学吗,想学我教你呀?

在23年的时候小傅哥发布了 DDD 两款脚手架,一个轻量版 lite ,一个标准版 std。通过这两款脚手架,小伙伴们在学习小傅哥写的技术教程和实战项目的时候,可以把脚手架代码下载到本地,通过 maven install 在本地构建出脚手架再配置到上图中的地址后使用。

我的理想情况是大家都能很顺利的构建、配置,美滋滋的使用,但实际情况却是,编码的路上,错误是层出不穷!

所以,我动手了。我要为你们提供更Easy的方式!但也差点难住我。接下来我就给伙伴们分享下,这个东西是如何搞的。

一、思考的开始 🤔

我发布过自己的 IntelliJ IDEA vo2dto 到插件市场,也推送过 openai sdk、chatglm sdk、db-router 等组件到 Maven 中央仓库。

那我就心思了,这脚手架也是个 Jar 包,应该也能发布到 Maven 中央仓库呀。要不Maven Central 自己那个脚手架是怎么发上去的?在编程开发这个事上,我一直秉承着,只要我能看见的,就都应该能复刻出来。

但你知道这里有一点,发布到 Maven 仓库的是 Jar 包,那我配置脚手架的地址哪里来呢(地址里是脚手架的定义)?我应该也没办法把脚手架的定义推送到人家 maven.apache.org 下面去。毕竟那是人家的老巢。如果能推送,那我现在打开的 Maven Central 应该有一堆脚手架,而不只是 Maven Central 所发布自己的。

所以,我灵机一动😁,打开了 Central Repository:

这个 archetype-catalog.xml 就是在构建 Maven 项目的脚手架时所产生的脚手架定义文件,配置到 IntelliJ IDEA 中,才会展示出脚手架列表,并可以选择使用。

那我知道了,虽然我不能推送到 maven 的老巢里去。但我可以自己提供个地址呀,把 archetype-catalog.xml 推送进去。经过最开始的验证,确实可以,完全没问题!Easy!

但接下来的问题变得麻烦了,Jar 怎么推送到 Maven 仓库呢。傅哥,你不是推过吗,你咋不行了? 死鬼!tnnd,推送 Jar 到 Maven 仓库从24年2月改版了!!!全编程界的鸡鸭鹅狗🦆,都没有人发过教程!

因为这个推送 Jar 在最开始的两天时间里,我一度怀疑是自己超限额了,不能创建了。也曾想过要不就只推送到 阿里云的私有仓库吧,大家配置个 阿里云 Maven 镜像地址,也能用。但这样的情况始终觉得不爽🙅🙅🏻‍,所以我走上了研究新版推送 Jar 的方式,直至最终成功啦💐!!!舒服!

接下来我就给小伙伴们分享下,这东西是怎么推送上去的。

二、觉得我也行 🤨

1. 卡卡两脚

做一个新的技术东西之前呢,先要检索下资料,看看有啥坑不。这个阶段也叫技术调研。卡卡一定能搜 发布Jar到maven仓库,全是以前的旧版本方案,没有一个能用的!

还有一个我写的,卡卡上去给两脚!不行了,确实没啥关于新版上传 Jar 到 Maven 仓库的资料,自己去趟坑吧。

2. 冒烟测试

完成目标最快的方式是什么?兄弟们!当然是结果驱动,先干一脚,看它嚎不嚎。遇到问题再解决问题。所以我准备先无脑上传一波,看看都给我什么信息。

  • 地址:Maven Central: Publishing

  • 看着这个上传组件的小图,还挺简单的。不过在这里它是一句有用的话都不写。那我就写个名字和上传个Jar进去。心里笑嘻嘻,难度,它会根据我的 Jar 自动分析 POM?

但发现我想多了,第一次上传全是报错!

  • 什么 pom 文件没传。所以我又机智的把 Jar 和 POM 打包了 zip 上传。

  • 紧接着报错 Invalid 'md5' checksum for file: scaffold-lite-1.0-sources.jar,缺少 md5、sha1 验证。好在我以前发布过 maven 仓库,知道这些配置。

  • 基本上知道要怎么传了,接下来,细看文档。遇到什么类错误,优先看什么内容。

3. 操作步骤

在 Maven Central: Publishing 首页有一个 Help 帮助文档,Register to Publish Via the Central Portal - The Central Repository Documentation 这里有非常详细的操作说明。接下来我讲一些核心的步骤,如果操作有失败,可以参考官网资料。

开始前,登录注册 https://central.sonatype.com - 可以选择 github 登录。

3.1 配置 NameSpace

如果选择 github 登录,你会有一个默认配置的 NameSpace(io.github.fuzhengwei),这个东西的作用就是要和本地工程名 groupId 保持一致的。如工程是 cn.bugstack、plus.gaga、com.liergou,那么你在的 NameSpace 就需要配置一个这样的调过来的域名。

  • 如图配置完添加验证即可,最后验证成功就可以使用了。

3.2 上传要求

文档:Upload - The Central Repository Documentation

  • 如文档上传要求,你需要把jar、pom、doc、sources 全部打包到 zip 包,同时每个文件的 asc、md5、sha1 也需要打包进来。

  • 这些文件也都是在旧版上传 maven 中央仓库的时候,所需提供的内容。

3.3 项目配置

源码scaffold-lite · master · KnowledgePlanet / road-map / xfg-frame-archetype-lite · GitCode

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         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>io.github.fuzhengwei</groupId>
    <artifactId>ddd-scaffold-lite</artifactId>
    <version>1.0</version>
    <packaging>maven-archetype</packaging>

    <name>ddd-scaffold-lite</name>

    <properties>
        <java.version>1.8</java.version>
        <maven-javadoc-plugin.version>3.2.0</maven-javadoc-plugin.version>
        <maven-source-plugin.version>3.2.1</maven-source-plugin.version>
        <maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
        <maven-checksum-plugin.version>1.10</maven-checksum-plugin.version>
    </properties>

    <build>
        <extensions>
            <extension>
                <groupId>org.apache.maven.archetype</groupId>
                <artifactId>archetype-packaging</artifactId>
                <version>3.2.0</version>
            </extension>
        </extensions>

        <plugins>
            <plugin>
                <groupId>net.nicoulaj.maven.plugins</groupId>
                <artifactId>checksum-maven-plugin</artifactId>
                <version>${maven-checksum-plugin.version}</version>
                <executions>
                    <execution>
                        <id>create-checksums</id>
                        <goals>
                            <goal>artifacts</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.9.1</version>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <aggregate>true</aggregate>
                    <charset>UTF-8</charset>
                    <docencoding>UTF-8</docencoding>
                </configuration>
                <executions>
                    <execution>
                        <id>attach-javadocs</id>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                        <configuration>
                            <additionalparam>-Xdoclint:none</additionalparam>
                            <javadocExecutable>
                                /Library/Java/JavaVirtualMachines/jdk1.8.0_341.jdk/Contents/Home/bin/javadoc
                            </javadocExecutable>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-gpg-plugin</artifactId>
                <version>1.5</version>
                <executions>
                    <execution>
                        <id>sign-artifacts</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>sign</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.3</version>
                <configuration>
                    <autoVersionSubmodules>true</autoVersionSubmodules>
                    <useReleaseProfile>false</useReleaseProfile>
                    <releaseProfiles>release</releaseProfiles>
                    <goals>deploy</goals>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>3.3.1</version> <!-- 使用最新版本 -->
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal> <!-- 绑定到 jar 目标 -->
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <description>ddd scaffold lite by xiaofuge</description>

    <url>https://spring.io/projects/spring-boot/xfg-frame-archetype</url>

    <developers>
        <developer>
            <name>fuzhengwei</name>
            <email>184172133@qq.com</email>
            <organization>fuzhengwei</organization>
            <organizationUrl>https://github.com/fuzhengwei</organizationUrl>
        </developer>
    </developers>

</project>

  • 注意 groupId、artifactId 名字,如果你有发布诉求,需要和你自己的一直。

  • maven-javadoc-plugin:生成 doc 文档。这里要注意,因为我们脚手架不是代码文件,没有doc的,所以要在工程中加一个任意类名文件。工程中小傅哥加了个 Api 类。

  • maven-source-plugin:生成 source 文件。

  • maven-gpg-plugin:是签名的加密文件,需要本地安装过 gpg 包。

  • checksum-maven-plugin:生成 md5、sha1 文件,但这里不会对 pom 生成此文件,还需要单独命令处理。

3.4 构建项目

第1次构建

第2次构建

执行脚本

3.5 上传 archetype-catalog.xml

把 archetype-catalog.xml 文件,上传到域名可访问云服务器的根目录中。

3.6 上传打包文件到 maven 仓库

  • 你需要按照你的工程结构也是 namespace 创建出文件夹结构,并把工程 target 打包的文件全部复制进来。

  • 最后把 io 这个文件夹,打包一个 zip 包。就可以了。

3.7 上传 maven 仓库

3.8 成功啦!💐

好啦,这就是整个脚手架的操作过程!现在你可以体验使用了。

文章转载自:小傅哥

原文链接:https://www.cnblogs.com/xiaofuge/p/18067516

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1510454.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day1-C++

1>提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数要求使用C风格字符串完成。 代码&#xff1a; #include <iostream> #include <string.h> using namespace std;int main() {string str ;int low 0, …

在funtion中用分号间隔还是逗号间隔

问: 回答: 这段代码是一个Vue组件方法的实现&#xff0c;名为resetForm。该方法的主要作用是关闭一个对话框&#xff08;通过设置this.dialogFormVisible false&#xff09;&#xff0c;重置表单字段&#xff08;使用this.$refs[formName].resetFields();&#xff09;&#x…

ROS机器人程序设计课程进度安排-2023-2024-2

进度安排由人工智能审核制定。 课程 教学进度表预期效果与课程内容详细描述 一、预期效果 此教学进度表旨在确保《ROS机器人程序设计》课程在2023&#xff5e;2024学年度第二学期内&#xff0c;按照预定的教学计划和进度&#xff0c;有序、高效地进行。通过本课程的教学&…

容器(0)-DOCKERFILE-安装-常用命令-部署-迁移备份-仓库

1.安装 启动 systemclt start docker //启动 systemctl status docker //状态 docker info systemclt stop docker systemctl status docker systemctl enable docker //开机启动 2.常用命令 镜像查看 docker images 镜像查看 docker status 镜像拉取 docker pull centos:…

【Spring】idea连接mysql数据库

1 MySQL安装 下载地址&#xff1a;https://dev.mysql.com/downloads/installer/ 安装server only选项&#xff0c;之后的可以选择默认安装选项 2 MySQL登录并创建数据 -- 创建数据库 create databases spring_db; use spring_db; -- 创建表 create table users (id INT AUTO…

学习大数据,所需要Java基础(9)

文章目录 网络编程实现简答客户端和服务器端的交互编写客户端编写服务端 文件上传文件上传客户端以及服务器端实现文件上传服务器端实现&#xff08;多线程&#xff09;文件上传服务器端&#xff08;连接池版本&#xff09;关闭资源工具类 BS架构服务器案例案例分析BS结构服务器…

网络请求与数据解析

urllib是Python自带的标准库中用于网络请求的库 &#xff0c;无需安装&#xff0c;直接引用即可。通常用于爬虫开发、API&#xff08;应用程序编程接口&#xff09;数据获取和测试。 urllib库的几个模块&#xff1a; urllib.request :用于打开和读取URLurllib.error:包含提出…

Jenkins插件Parameterized Scheduler用法

Jenkins定时触发构建的同时设定参数。可以根据不同的定时构建器设置不同参数或环境变量的值。可以设置多个参数。并结合when控制stage流程的执行。结合when和triggeredBy区分定时构建的stage和手动执行的stage。 目录 什么是Parameterized Scheduler&#xff1f;如何配置实现呢…

用Origin快速拟合荧光寿命、PL Decay (TRPL)数据分析处理

需要准备材料&#xff1a;Origin、PL Decay数据txt文件 首先打开Origin画图软件 导入数据&#xff0c;按照下图箭头操作直接导入 双击你要导入的PL Decay的txt数据文件&#xff0c;然后点OK 继续点OK 数据导入后首先删除最大光子数之前的无效数据&#xff0c;分析的时候用…

react中的useEffect的使用

目录 React的useEffect深度解析与实战应用 一、useEffect的基本使用 二、useEffect的依赖项数组 三、避免无限循环 四、使用清空函数进行清理 React的useEffect深度解析与实战应用 React Hooks 是 React 16.8 版本引入的新特性&#xff0c;它允许我们在不编写 class 的情况…

AHU 汇编 实验二

一、实验名称&#xff1a;实验二 不同寻址方式的灵活运用 二、实验内容&#xff1a;定义数组a[6]&#xff0c;用多种寻址方式访问对应元素&#xff0c;实现&#xff08;a[0]a[1]&#xff09;*(a[2]-a[3])/a[4],将结果保存在内存a[5]中&#xff0c;用debug查询结果。 实验过程&a…

盘点 gma 中为 栅格数据 设计的切片操作

数据切片是 Python 中非常实用的方法&#xff0c;Numpy、Pandas 等第三方库的切片操作为数据处理提供了不少便利。如果能对栅格/矢量数据进行切片&#xff0c;那会使地理数据处理也变得方便和快捷。 基于此&#xff0c;自 gma 2.0.6.10 开始&#xff0c;gma 针对 打开的栅格数据…

【使用postman测试python接口】

打开python服务 设置postman如下&#xff0c;并发送&#xff1a; postman新建请求设置请求方式为post设置地址、raw、json方式、内容如下 结果&#xff1a; python如下&#xff1a; from flask import Flask, request, jsonifyapp Flask(__name__) # 实例化对象app.route…

酷开科技智慧AI助力酷开系统千屏千面

每台智能电视都有一个专属的操作系统&#xff0c;而酷开系统作为一款基于人工智能技术的智能电视操作系统&#xff0c;深受大众喜爱&#xff0c;其最大的特点就是“千屏千面”。这意味着每一位消费者在使用酷开系统时&#xff0c;通过酷开科技的智慧AI&#xff0c;都能根据自己…

SpringSecurity原理简述

文章目录 0. 简介1. 快速入门1.1 准备工作1.2 引入SpringSecurity 2. 认证2.1 登陆校验流程2.2 原理初探2.2.1 SpringSecurity完整流程2.2.2 认证流程详解 2.3 解决问题2.3.1 思路分析2.3.2 准备工作2.3.3 实现2.3.3.1 数据库校验用户准备工作核心代码实现 2.3.3.2 密码加密存储…

Java this 关键字

**1.上节课学习了Java对象的定义和使用&#xff0c;我们知道了对象是存在堆内存中的&#xff0c;Java要求程序员不能直接操作堆内存&#xff0c;因此出现了引用的概念。引用的实质是一个存放对象地址的局部变量。 定义一个对象的语法&#xff1a; **Student s1 new Student();…

1.Spring核心功能梳理

概述 本篇旨在整体的梳理一下Spring的核心功能,让我们对Spring的整体印象更加具体深刻,为接下来的Spring学习打下基础。 本片主体内容如下: Bean的生命周期依赖注入的实现Bean初始化原理推断构造方法原理AOP的实现这里要说明一下,我们这里说到的Spring,一般指的是Spring F…

Mac M1:通过docker安装RocketMQ、RocketMQ-Dashboard

0. 引言 最近本地启动以前docker安装的rocketmq发现报错了&#xff0c;因为是从老mac迁移过来的&#xff0c;发现支持的芯片还是amd的&#xff0c;于是重新在docker下安装rocketmq&#xff0c;并记录下步骤&#xff0c;方便大家后续参考。 1. 步骤 1、先下载项目源码 git c…

3.基础算法之搜索与图论

1.深度优先搜索 深度优先搜索&#xff08;DFS&#xff0c;Depth First Search&#xff09;是一种用于遍历或搜索树或图的算法。它将当前状态按照一定的规则顺序&#xff0c;先拓展一步得到一个新状态&#xff0c;再对这个新状态递归拓展下去。如果无法拓展&#xff0c;则退回…

【手撸IM】消息ID设计与实现

【手撸IM】专题由来&#xff1a;之前利用业余空闲时间写一个Java版Akka-Rpc&#xff0c;并且基于它写了一个分布式高性能文件服务&#xff0c;从反馈上来看&#xff0c;还是得到了一定的关注&#xff0c;甚至部分同学真的基于此直接抄作业和二开了。因此有了再进一步去手撸一个…