gradle 上传jar包_gradle 打包jar上传到nexus 同时上传源码jar
以我们实际项目为例,项目中后台和前台单独开发,之间通过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相关推荐
- pom 的第三方jar报错_01_maven-将第三方jar包一起打包到项目 jar 包中
前言:maven-将依赖的 jar包一起打包到项目 jar 包中 有时候在项目开发中,需要很多依赖的 jar 包,其中依赖的 jar 包也会依赖其他的 jar 包,导致jar 包的管理很容易不全. 如 ...
- [JAR包] android引入JAR包,打包成JAR包,打包成Library项目,导入Library项目
(1)项目导入JAR包: 1.在项目目录里建立一个libs目录,将外部jar包拷贝在里面. 2.右键点击项目,Bulid Path->Configure Build Path 3.在设置Libr ...
- Maven之——使用本地jar包并打包进war包里面的方法
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/52594602 很显然,这种方法是很不可取的,因为Maven是用来团队合作,以及发布 ...
- SpringBoot项目开发(十):引用本地jar包与打包本地jar
标题可能有点绕口,在实际开发中,有时所引用的jar架包无法在 maven 中央仓库里找到,那么j就要引用本地jar包,然而在项目开发完成后,需要打包部署时,引用的本地jar包没有打包进去部署包,就会导 ...
- Maven项目在pom文件中引入lib下的第三方jar包并打包进去
场景 Maven中引入依赖的jar包,大都是通过在pom.xml中使用坐标添加依赖的方式. 如果需要引用的jar包在Maven中央仓库下没有,那么怎么在项目中引入. 首先在工程目录下新建libs目录 ...
- mvn install:install-file将本地一个中央仓库没有的jar包,推到本地仓库----所有依赖不上仓库不能用
mvn install:install-file将本地一个中央仓库没有的jar包,推到本地仓库----所有依赖不上仓库不能用! 前提:maven等环境配置Ok 目标:把中央仓库没有的,部门内部 自研开 ...
- idea引入本地jar包及打包
1.引入本地jar包 注:https://blog.csdn.net/hi_boy_/article/details/80908368 2.如果要打包成功,需作如下配置 <dependency& ...
- 使用unzip解压jar包和jar包的打包方法
unzip命令用于解压缩由zip命令压缩的".zip"压缩包,也可用来解压jar包 将压缩文件test.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令 ...
- android studio开发十一 Library第三方类库源码, Jar包和SO库
原创: 发现android里面不熟悉的东西太多了,查了好多资料,终于搞清楚 Library第三方类库源码, Jar包和SO库这些都是干什么的了,怎么使用它们了. [Library第三方类库源码] Ja ...
最新文章
- 第三话 开关说它不认识“2”
- 单元测试系列之八:Sonar 数据库表关系整理一(续)
- block 实现原理详解(一)
- JAVA并发编程实践笔记
- python标准库有pickle_Python标准库05 存储对象 (pickle包,cPickle包)-阿里云开发者社区...
- TensorFlow工具及笔记
- 不简单的工厂:实际体验 .NET Core 2.1 新生物 HttpClientFactory
- 计算机重装系统 英语,重装系统还看不懂BIOS?中英文详细对照表,进入BIOS如此简单...
- 备忘录——贝叶斯网络与贝叶斯深度网络学习思路总结
- unity将预制体写成fbx_Unity3d 动态加载fbx模型文件
- python socket编程在阿里云的esc服务器下 [Errno 99] Cannot assign requested address解决方式
- mysql定时任务每天凌晨三点钟醒来_linux cron 下的定时执行工具使用技巧
- 从asm磁盘头自动备份看11g到12c的新特性--Physical_metadata_replication
- 活动预告|CoodeWisdom 软件智能化开发与运维学术报告系列 第4期(陈鹏飞 中山大学)...
- Dubbo Wrapper
- VS2015安装失败
- POJ1608 Banal Tickets
- c语言中10的6次方阶乘运算,阶乘的运算方法
- 虚拟机安装linux
- 谈我所经历的区块链历程