日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gradle 上传jar包_gradle 打包jar上传到nexus 同时上传源码jar

發布時間:2024/10/8 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。