您好,登錄后才能下訂單哦!
這篇文章主要介紹“gradle怎么打包發布到maven的nexus倉庫”,在日常操作中,相信很多人在gradle怎么打包發布到maven的nexus倉庫問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”gradle怎么打包發布到maven的nexus倉庫”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
公司要封裝一個工具類,把常用的mybatis,apollo,redis,初始化運行檢查等等都封裝在一起,項目建好了,但是打包發布nexus之后,別的項目死活拉不到依賴包,經查,是gradle打包時生成的pom文件中沒有加入模塊依賴.
以前公司用gradle打包的時候,先新建一個maven_push.gradle ,然后在要打包的模塊build.gradle中加上一句
apply from: '../maven_push.gradle'
maven_push.gradle的內容如下:
// The Maven plugin adds support for deploying artifacts to Maven repositories.
// 一個可以讓你把庫上傳到maven倉庫的插件
apply plugin: 'maven'
// The signing plugin adds the ability to digitally sign built files and artifacts. These digital signatures can then be used to prove who built the artifact the signature is attached to as well as other information such as when the signature was generated.
// 對庫文件進行數字簽名的插件,可以通過簽名知道誰創建了這個庫文件,簽名的時間等等信息
apply plugin: 'signing'
// 聲明變量記錄maven庫地址
def mavenRepositoryUrl
// 判斷是發布到正式庫,還是snapshots庫
if (isReleaseBuild()) {
println 'RELEASE BUILD'
// 下面的庫地址指向的是我們私有倉庫的Releases 倉庫
mavenRepositoryUrl = "http://xxx.com/repository/maven-public/"
} else {
println 'SNAPSHOTS BUILD'
// 下面的庫地址指向的是我們私有倉庫的snapshots 倉庫
mavenRepositoryUrl = "http://xxxx.com/repository/maven-snapshots/"
}
// 根據我們在likelib下gradle.properties中聲明的版本名稱,來分辨是Release版本還是 snapshots版本
def isReleaseBuild() {
return !VERSION_NAME.contains("SNAPSHOT");
}
afterEvaluate { project ->
// 我們聲明我們要執行的上傳到maven的task
uploadArchives {
repositories {
mavenDeployer {
beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
// 我們類比下compile com.squareup.okhttp:okhttp:2.7.0
// artifactId 對應com.squareup.okhttp; groupId 對應okhttp;version對應2.7.0
// 這樣就類似坐標的方式定位到了制定的庫文件
pom.artifactId = POM_ARTIFACT_ID
pom.groupId = POM_GROUP_ID
pom.version = VERSION_NAME
// 授權驗證,這里也就是你登陸搭建的私服服務器時候的用戶名\密碼
repository(url: mavenRepositoryUrl) {
authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
}
// 這里是配置我們maven庫需要的pom.xml文件的各個內容,具體意思我們在主目錄gradle.properties中解釋
pom.project {
name POM_NAME
packaging POM_PACKAGING
description POM_DESCRIPTION
url POM_URL
}
}
}
}
// 進行數字簽名
signing {
required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
sign configurations.archives
}
}
這樣是可以打包,但是對模塊依賴就沒辦法打包,如gradle依賴配置如下:
dependencies { compile project(":tools-mybatis") compile project(":tools-ops")}
但打包出來的pom.xml文件里面并沒有這兩個依賴.
上述通過 maven 插件可能還有別的姿試可以打包,但是沒有找到,通過查找官方文檔,找到了以下解決方案
引入 maven-publish,這個plugin , 然后在模塊build.gradle中加入配置:
publishing {
publications {
maven(MavenPublication) {
groupId = group
artifactId = 'tools-starter'
version = version
from components.java
}
}
repositories {
maven { url "http://xxxx.com/repository/maven-snapshots/"
credentials {
username 'xxx'
password 'xxxx'
}
}
}
}
這樣就可以通過Idea右邊gradle工具欄的插件菜單來發布了
這樣生成的pom.xml中是包含這兩個依賴的.
到此,關于“gradle怎么打包發布到maven的nexus倉庫”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。