以我们实际项目为例,项目中后台和前台单独开发,之间通过dubbo接口调用,后台提供服务接口,具体实现对前台隐藏,前台使用某个服务时,下载相应依赖然后调用,因此需要将服务接口打成jar包,上传到仓库中,供前台下载。

服务接口

以上图为例,需要将红框中的包单独打包成jar包,前台需要某个服务,则下载相应依赖,本文以上传base包为例。

上传classjar包

apply plugin: "java"

apply plugin: "maven-publish"

//设置动态属性

ext {

//发布到仓库用户名

publishUserName = "123"

//发布到仓库地址

publishUserPassword = "123"

//仓库地址

publishURL="http://196.10.149.149:8080/nexus/content/repositories/snapshots/"

apiBaseJarName = "gcf-dubbo-api-base"

apiBaseJarVersion = '1.6.gome-SNAPSHOT'

builtBy="gradle 1.9"

}

//jar包名称组成:[baseName]-[appendix]-[version]-[classifier].[extension]

//打包class文件

task apiBaseJar(type:Jar){

version apiBaseJarVersion

baseName apiBaseJarName

from sourceSets.main.output

destinationDir file("$buildDir/api-libs")

includes ['com/ai/gcf/api/base/**']

manifest {

attributes 'packageName': apiBaseJarName, 'Built-By': builtBy,'Built-date': new Date().format('yyyy-MM-dd HH:mm:ss'),'Manifest-Version':version

}

}

//上传jar包

publishing {

publications {

publishing.publications.create('apiBase', MavenPublication) {

groupId 'com.ai.gcf.api'

artifactId apiBaseJarName

version apiBaseJarVersion

artifact apiBaseJar

}

}

repositories {

maven {

url publishURL

credentials {

username = publishUserName

password = publishUserPassword

}

}

}

}

上面就将base包下的class文件打成jar包上传到nexus仓库了。

但是怎么将源码一块上传上去呢,就像其他开源包一样,使用者下载某个jar包时同时下载下来他的源码包?

首先咱们看下其他开源包在nexus上面的结构,以fastjson为例:

fastjson

在1.2.14版本下面有两个jar包,分别是fastjson-1.2.14.jar和fastjson-1.2.14-sources.jar,接着看下这两个jar包的maven构建区别:

fastjson-1.2.14.jar

com.alibaba

fastjson

1.2.14

fastjson-1.2.14-sources.jar

com.alibaba

fastjson

1.2.14

sources

上面两者的唯一区别就是源码包增加了classifier,所以照猫画虎,我们也上传一个源码包,名称叫xxx-sources.jar。

完整build.gradle文件如下:

apply plugin: "java"

apply plugin: "maven-publish"

//设置动态属性

ext {

//发布到仓库用户名

publishUserName = "123"

//发布到仓库地址

publishUserPassword = "123"

//仓库地址

publishURL="http://196.10.149.149:8080/nexus/content/repositories/snapshots/"

apiBaseJarName = "gcf-dubbo-api-base"

apiBaseJarVersion = '1.6.gome-SNAPSHOT'

builtBy="gradle 1.9"

}

//jar包名称组成:[baseName]-[appendix]-[version]-[classifier].[extension]

//打包class文件

task apiBaseJar(type:Jar){

version apiBaseJarVersion

baseName apiBaseJarName

from sourceSets.main.output

destinationDir file("$buildDir/api-libs")

includes ['com/ai/gcf/api/base/**']

manifest {

attributes 'packageName': apiBaseJarName, 'Built-By': builtBy,'Built-date': new Date().format('yyyy-MM-dd HH:mm:ss'),'Manifest-Version':version

}

}

//打包源码

task apiBaseSourceJar(type:Jar){

version apiBaseJarVersion

baseName apiBaseJarName

classifier "sources"

from sourceSets.main.allSource

destinationDir file("$buildDir/api-libs")

includes ['com/ai/gcf/api/base/**']

manifest {

attributes 'packageName': apiBaseJarName+'-sources', 'Built-By': builtBy,'Built-date': new Date().format('yyyy-MM-dd HH:mm:ss'),'Manifest-Version':version

}

}

//上传jar包

publishing {

publications {

publishing.publications.create('apiBase', MavenPublication) {

groupId 'com.ai.gcf.api'

artifactId apiBaseJarName

version apiBaseJarVersion

//同时上传class包和源码包

artifacts = [apiBaseJar,apiBaseSourceJar]

}

}

repositories {

maven {

url publishURL

credentials {

username = publishUserName

password = publishUserPassword

}

}

}

}

在命令行cd到当前项目路径,执行命令gradle tasks,会发现多了红框中的5个task.

publishing.png

执行gradle publishApiBasePublicationToMavenRepository上传class包和源码成功。

apibase在nexus中的结构

上传成功后在nexus中的结构,现在使用者就可以在项目的build.gradle添加该jar包的依赖了,这样下载该包class时也会下载他的源码包。

compile('com.ai.gcf.api:gcf-dubbo-api-base:1.6.gome-SNAPSHOT')

gradle 上传jar包_gradle 打包jar上传到nexus 同时上传源码jar相关推荐

  1. pom 的第三方jar报错_01_maven-将第三方jar包一起打包到项目 jar 包中

    前言:maven-将依赖的 jar包一起打包到项目 jar 包中 有时候在项目开发中,需要很多依赖的 jar 包,其中依赖的 jar 包也会依赖其他的 jar 包,导致jar 包的管理很容易不全. 如 ...

  2. [JAR包] android引入JAR包,打包成JAR包,打包成Library项目,导入Library项目

    (1)项目导入JAR包: 1.在项目目录里建立一个libs目录,将外部jar包拷贝在里面. 2.右键点击项目,Bulid Path->Configure Build Path 3.在设置Libr ...

  3. Maven之——使用本地jar包并打包进war包里面的方法

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/52594602 很显然,这种方法是很不可取的,因为Maven是用来团队合作,以及发布 ...

  4. SpringBoot项目开发(十):引用本地jar包与打包本地jar

    标题可能有点绕口,在实际开发中,有时所引用的jar架包无法在 maven 中央仓库里找到,那么j就要引用本地jar包,然而在项目开发完成后,需要打包部署时,引用的本地jar包没有打包进去部署包,就会导 ...

  5. Maven项目在pom文件中引入lib下的第三方jar包并打包进去

    场景 Maven中引入依赖的jar包,大都是通过在pom.xml中使用坐标添加依赖的方式. 如果需要引用的jar包在Maven中央仓库下没有,那么怎么在项目中引入. 首先在工程目录下新建libs目录 ...

  6. mvn install:install-file将本地一个中央仓库没有的jar包,推到本地仓库----所有依赖不上仓库不能用

    mvn install:install-file将本地一个中央仓库没有的jar包,推到本地仓库----所有依赖不上仓库不能用! 前提:maven等环境配置Ok 目标:把中央仓库没有的,部门内部 自研开 ...

  7. idea引入本地jar包及打包

    1.引入本地jar包 注:https://blog.csdn.net/hi_boy_/article/details/80908368 2.如果要打包成功,需作如下配置 <dependency& ...

  8. 使用unzip解压jar包和jar包的打包方法

    unzip命令用于解压缩由zip命令压缩的".zip"压缩包,也可用来解压jar包 将压缩文件test.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令 ...

  9. android studio开发十一 Library第三方类库源码, Jar包和SO库

    原创: 发现android里面不熟悉的东西太多了,查了好多资料,终于搞清楚 Library第三方类库源码, Jar包和SO库这些都是干什么的了,怎么使用它们了. [Library第三方类库源码] Ja ...

最新文章

  1. 第三话 开关说它不认识“2”
  2. 单元测试系列之八:Sonar 数据库表关系整理一(续)
  3. block 实现原理详解(一)
  4. JAVA并发编程实践笔记
  5. python标准库有pickle_Python标准库05 存储对象 (pickle包,cPickle包)-阿里云开发者社区...
  6. TensorFlow工具及笔记
  7. 不简单的工厂:实际体验 .NET Core 2.1 新生物 HttpClientFactory
  8. 计算机重装系统 英语,重装系统还看不懂BIOS?中英文详细对照表,进入BIOS如此简单...
  9. 备忘录——贝叶斯网络与贝叶斯深度网络学习思路总结
  10. unity将预制体写成fbx_Unity3d 动态加载fbx模型文件
  11. python socket编程在阿里云的esc服务器下 [Errno 99] Cannot assign requested address解决方式
  12. mysql定时任务每天凌晨三点钟醒来_linux cron 下的定时执行工具使用技巧
  13. 从asm磁盘头自动备份看11g到12c的新特性--Physical_metadata_replication
  14. 活动预告|CoodeWisdom 软件智能化开发与运维学术报告系列 第4期(陈鹏飞 中山大学)...
  15. Dubbo Wrapper
  16. VS2015安装失败
  17. POJ1608 Banal Tickets
  18. c语言中10的6次方阶乘运算,阶乘的运算方法
  19. 虚拟机安装linux
  20. 谈我所经历的区块链历程

热门文章

  1. 数据有了,如何构建数据资产?
  2. html 按需加载插件,htmlwebpackplugin
  3. 向上造型和向下造型_学习园地 | 岭南盆景造型艺术——枝
  4. 第五周课程总结试验报告(三)
  5. .net集合类型的接口说明与使用
  6. 性能测试之性能测试的基础理论
  7. ambari 维护模式及reset API 操作
  8. 04需求工程软件建模与分析阅读笔记之四
  9. python字符串内置方法
  10. MVC学习之简单的CRUD