使用Gradle推送SpringBoot项目源码到私有仓库

应用场景:

在SpringCloud微服务项目中,通常会划分成多个业务服务,而这些服务之间一般会使用Feign组件进行相互调用,所以在项目开发中会衍生出一个问题:Feign客户端代码该由服务调用方的开发人员编写还是服务提供方的开发人员编写?

服务调用方编写:开发人员A需要开发人员B提供一个接口,开发人员B写好接口后,将URL、参数、方法名等告诉开发人员A或者直接点,直接写好代码发给对方,开发人员A再拿A给的代码写进项目里 => 开发流程不够规范、后期不便维护,如果开发人员B修改了接口的URL或其他东西,那么还得通知A进行修改,效率低

服务提供方编写:开发人员A需要开发人员B提供一个接口,开发人员B将Feign客户端模块独立出来,写好Feign客户端和REST接口,再在子类中实现该接口,编写好具体业务逻辑,开发完成后,将独立出来的Feign客户端模块打包上传到私有Maven仓库,让开发人员A的项目添加B提供的Feign客户端依赖,直接即可在项目中进行接口调用,效率高,后期方便维护,开发人员B的服务接口发生了更改,让开发人员A更新依赖即可

下面说明下(踩坑过程)使用Gradle将SpringBoot项目的源码打包并上传到私有Maven仓库的方法

使用IDEA搭建SpringBoot项目(使用Gradle)时,项目根目录下的初始build.gradle文件内容大概如下

plugins {
    id ‘org.springframework.boot‘ version ‘2.2.2.RELEASE‘
    id ‘io.spring.dependency-management‘ version ‘1.0.8.RELEASE‘
    id ‘java‘
}

group = ‘com.learn‘
version = ‘0.0.1-SNAPSHOT‘
sourceCompatibility = ‘1.8‘

repositories {
    mavenCentral()
}

ext {
    set(‘springCloudVersion‘, "Hoxton.SR1")
}

dependencies {
    implementation ‘org.springframework.boot:spring-boot-starter-web‘
    implementation ‘org.springframework.cloud:spring-cloud-starter-openfeign‘
    testImplementation(‘org.springframework.boot:spring-boot-starter-test‘) {
        exclude group: ‘org.junit.vintage‘, module: ‘junit-vintage-engine‘
    }
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

test {
    useJUnitPlatform()
}

添加Gradle的maven-publish插件,该插件提供打包源码并发布代码到Maven仓库的功能

plugins {
    //id ‘org.springframework.boot‘ version ‘2.2.2.RELEASE‘
    id ‘io.spring.dependency-management‘ version ‘1.0.8.RELEASE‘
    ......
    id ‘maven-publish‘
}

划重点1: org.springframework.boot 这个插件一定要删掉或者注释掉,这个插件是用来将打包SpringBoot项目的,如果不禁用掉这个插件,打包时将会打包成SpringBoot应用的可启动jar包,会将各种依赖都打包进去,而不会打包成我们想要的源码jar包

划重点2:使用IDEA构建SpringBoot应用时,会在dependencyManagemet中统一管理依赖版本而不用我们显示指定,但是如果要使用Gradle的maven-publish插件的话,需要在依赖定义中指定具体版本,否则会打包失败

dependencies {
    implementation ‘org.springframework.boot:spring-boot-starter-web:2.2.2.RELEASE‘
    implementation ‘org.springframework.cloud:spring-cloud-starter-openfeign:2.2.1.RELEASE‘
    testImplementation(‘org.springframework.boot:spring-boot-starter-test:2.2.2.RELEASE‘) {
        exclude group: ‘org.junit.vintage‘, module: ‘junit-vintage-engine‘
    }
}

再在build.gradle文件中加上

//声明一个打包源码的Tasktask sourcesJar(type: Jar, dependsOn: classes) {
    from sourceSets.main.allJava
    archiveClassifier = ‘sources‘
}
//声明代码发布
publishing {
    publications {
        vectorMaven(MavenPublication) {
            artifactId = ‘feign-api‘
            from components.java

            artifact sourcesJar
        }
    }
    repositories {
        maven {
            url ‘http://xxxxx/repository/xxx-maven/‘  //私有仓库地址
            credentials {
                username = ‘admin‘   //私有仓库账号
                password = ‘xxx‘    //私有仓库密码
            }

        }
    }
}

私有Maven仓库是使用Nexus搭建的私有仓库,使用Docker拉取官方镜像即可很方便的部署,具体操作自行百度

最后在项目根目录中使用gradlew publish命令(Windows系统)

或IDEA的Gradle项目构建可视化窗口 => Tasks => publishing => publish

即可自动完成源码打包并推送到私有Maven仓库

原文地址:https://www.cnblogs.com/ahzr/p/12199146.html

时间: 2024-11-13 08:00:40

使用Gradle推送SpringBoot项目源码到私有仓库的相关文章

用c#开发微信 (4) 基于Senparc.Weixin框架的接收事件推送处理 (源码下载)

本文讲述使用Senparc.Weixin框架来快速处理各种接收事件推送.这里的消息指的是传统的微信公众平台消息交互,微信用户向公众号发送消息后,公众号回复消息给微信用户.包括以下类型: 1 subscribe/unsubscribe: 关注/取消关注事件 2 scan: 扫描带参数二维码事件 3 location: 上报地理位置事件 4 click: 自定义菜单事件     1) click: 点击菜单拉取消息时的事件推送     2) view: 点击菜单跳转链接时的事件推送     3) 

2016年最牛逼的分类Android项目源码免费一次性打包下载!

之前发过一个帖子,但是那个帖子有点问题我就重新发一个吧,下面的源码是我从今年开始不断整理源码区和其他网站上的安卓例子源码,目前总共有810套左右,根据实现的功能被我分成了100多个类,总共接近2.5G,还在不断更新.初学者可以快速方便的找到自己想要的例子,大神也可以看一下别人的方法实现.虽然的例子都是我一个人辛辛苦苦花了很多时间和精力整理的,但是既然这些例子是来自于社区那就让他们免费回归社区吧,(是的!特么的不要一分钱!最看不起那些挂羊头卖狗的)你可以在本帖里面按Ctrl+F查找你需要的关键字,

Android 开源项目源码解析(第二期)

Android 开源项目源码解析(第二期) 阅读目录 android-Ultra-Pull-To-Refresh 源码解析 DynamicLoadApk 源码解析 NineOldAnimations 源码解析 SlidingMenu 源码解析 Cling 源码解析 BaseAdapterHelper 源码分析 Side Menu.Android 源码解析 DiscreteSeekBar 源码解析 CalendarListView 源码解析 PagerSlidingTabStrip 源码解析 公共

《转》 Ceilometer项目源码分析----ceilometer项目源码结构分析

感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正! 如果转载,请保留作者信息. 博客地址:http://blog.csdn.net/gaoxingnengjisuan 邮箱地址:[email protected] PS:最近没有登录博客,很多朋友的留言没有看见,这里道歉!还有就是本人较少上QQ,可以邮件交流. ceilometer主要概念 sample:采样数据是每个采集时间点上meter对应的值: statistics:一般是统计学上某个周期内,meter对

分享一个源码下载网站,天气预报项目源码,比较适合新手学习

本项目是一个天气预报项目源码,可以设置城市.可以更换应用内背景图片.自带天气widget小组件等,天气信息由m.weather.com.cn提供.比较适合新手学习和参考.项目编译版本4.2.2默认编码UTF-8源码有大量中文注释. 上链接:http://www.devstore.cn/code/info/104.html,需要的拿去. 天气预报项目相关服务--推送服务的选择,市场上的推送服务有百度云,个推,极光,友盟,小米,Bmob,智游等等,在如此多的推送服务里面你的项目该集合哪个推送服务呢,

Android项目源码分享

http://blog.csdn.net/gao_chun/article/details/47263063 Android项目源码分享 给大家分享几个Android开发项目源码,大部分功能相信可以在实战项目中直接使用,供大家下载学习,大部分项目是基于 Android Studio开发,IDE为Eclipse的童鞋可通过网上教程自行转换,这里就不多说了.有句话说,不贴墙纸的装修都是耍流氓,无源码无效果图的文章也算是耍流氓, ,那就直接上图吧.最近在整理GitHub,打算把一些以前做过的项目中部分

来,接招!!! (八个Android项目源码)

Android项目源码分享 给大家分享几个Android开发项目源码,大部分功能相信可以在实战项目中直接使用,供大家下载学习,大部分项目是基于 Android Studio开发,IDE为Eclipse的童鞋可通过网上教程自行转换,这里就不多说了.有句话说,不贴墙纸的装修都是耍流氓,无源码无效果图的文章也算是耍流氓, ,那就直接上图吧.最近在整理GitHub,打算把一些以前做过的项目中部分功能和使用的技术点资料上传,回头也和大家分享. OK,要去忙了,再不去忙项目,测试版出不来就危险了,希望有一天

分析开源项目源码,我们该如何入手分析?(授人以渔)

1 前言 本文接上篇文章跟大家聊聊我们为什么要学习源码?学习源码对我们有用吗?,那么本篇文章再继续跟小伙伴们聊聊源码这个话题. 在工作之余开始写SpringBoot源码分析专栏前,跟小伙伴们聊聊"分析开源项目源码,我们该如何入手分析?"这个话题,我们就随便扯皮,反正是跟小伙伴们一起学习交流,没必要太正式. 小伙伴们看完本文后,若有自己的源码阅读心得可以在下面进行评论或私聊我进行分享,让我从小伙伴们身上GET多点源码阅读的一些技巧,嘿嘿. 2 学习开源框架源码到底难不难? 那么,先跟小伙

unity3d 项目源码下载链接

2-1 炉石传说 客户端加服务器端 链接:http://pan.baidu.com/s/1dDKY3Fr 密码:c03q 2-2 新仙剑奇侠传 链接:http://pan.baidu.com/s/1b4QVqI 密码:dic5 2-3 unity3d 战斗卡牌<变身吧主公>客户端+服务器源码 链接:http://pan.baidu.com/s/1kUpot51 密码:i02u 2-4 降临OL-U3D全套源码 链接:http://pan.baidu.com/s/1sktLQ5v 密码:we0g