發(fā)布個人項目jar包到maven中央倉庫詳解
1、在sonatype提交發(fā)布工單(Issue)
-
sonatype是由社區(qū)支持的開源項目托管服務(wù)(Open Source Project Repository Hosting,簡稱OSSRH),它免費,開發(fā)者可以將自己的開源項目生成的jar包托管到這里
-
當項目打包部署到這里之后,它將自動同步到maven中央倉庫
-
使用maven或者gradle構(gòu)建項目生成的jar發(fā)布到maven中央倉庫都需要OSSRH賬號
1.1 OSSRH賬號注冊
立即注冊
完成注冊后會跳轉(zhuǎn)到登錄界面,立即登錄即可
1.2 新建問題
新建問題實際上是發(fā)起了一個新建項目審核的審核工作流,會有人審核你所填寫的信息
1.3 域名認證
- 域名解析記錄值添加完成之后,回到sonatype JIRA管理平臺,點擊問題后的responsed按鈕
- 如果沒有域名,也可以將Group Id填寫為github的用戶域,如: com.github.<gihub用戶名> ,填寫github用戶域,驗證方式也不一樣,需要你在github中新建一個空的倉庫,倉庫的名稱是 OSSRH-84194
2、安裝GnuPG軟件,并生成簽名
2.1 下載安裝GnuPG
下載地址 windows直接下載 傻瓜式安裝
2.2 創(chuàng)建密鑰
我們打開windows的 CMD命令行,執(zhí)行如下命令:
C:
\Users
\MC12
3>gpg --full-generate-key
C:
\Users
\MC12
3>gpg --list-key
C:
\Users
\MC12
3>gpg --keyserver keyserver.ubuntu.com --send-keys 98700D239EA4BD1092B749640CC20CE1E836B7B3
C:
\Users
\MC12
3>gpg --keyserver keyserver.ubuntu.com --recv-keys 98700D239EA4BD1092B749640CC20CE1E836B7B3
3、項目配置及打包
此處介紹使用gradle構(gòu)建的項目的配置方式
3.1 添加配置信息
打開已經(jīng)安裝的GnuPG軟件Kleopatra
導(dǎo)出私鑰
復(fù)制私鑰到項目路徑下
創(chuàng)建全局變量配置
- 項目根目錄下新建gradle.properties
# sonatype username
ossrhUsername=asdf
# sonatype 密碼
ossrhPassword=Sonatypeuserpwd# gpg公鑰指紋的最后8位
signing.keyId=WW1A82WW
# 設(shè)置的密鑰密碼
signing.password=reeee21
# gpg私鑰的路徑
signing.secretKeyRingFile=machao (15009421862)_0xE836B7B3_SECRET.gpg
plugins
{id 'java'id 'maven' // 為了產(chǎn)生pom.xml文件
id 'signing' // 組件簽名插件
}// 項目組和版本
group
= 'top.mstudy'
archivesBaseName
= "commons-tool"
version
= "0.0.2"apply plugin:
'maven-publish'// 指定所使用的的倉庫
repositories
{mavenLocal
()mavenCentral
()maven
{url
= uri
('http://maven.aliyun.com/nexus/content/groups/public/')}
}/*** gradle工程所有的jar包的坐標都在dependencies屬性內(nèi)放置* 每一個jar包的坐標都有三個基本元素組成:group,name,version* testCompile表示該jar包在測試的時候起作用,該屬性為jar包的作用域* 我們在gradle里面添加坐標的時候都要帶上jar包的作用域*/
dependencies
{implementation
'org.springframework.boot:spring-boot-starter-web:2.4.13'......
}sourceCompatibility
= 1.8
targetCompatibility
= 1.8// java的版本和編碼集等信息,這里記得和idea中配置的一樣,都使用你自己的java版本
compileJava
{sourceCompatibility
= 1.8targetCompatibility
= 1.8[compileJava
]*.options*.encoding
= 'UTF-8'
}compileTestJava
{sourceCompatibility
= 1.8targetCompatibility
= 1.8[compileTestJava
]*.options*.encoding
= 'UTF-8'
}test {exclude
'**/*.class'
}publishing
{publications
{maven
(MavenPublication
) {from
(components.java
)}}
}tasks.withType
(JavaCompile
) {options.encoding
= 'UTF-8'
}
//對于典型的 Java 項目,您可以添加一個javadocJar以及一個 sourcesJar任務(wù)
task javadocJar
(type: Jar
) {classifier
= 'javadoc'from javadoc
}task sourcesJar
(type: Jar
) {classifier
= 'sources'from sourceSets.main.allSource
}// javadoc 配置,這里是自定義了 java doc 的一些配置
javadoc
{description
= "Generates project-level javadoc for use in -javadoc jar"options.memberLevel
= org.gradle.external.javadoc.JavadocMemberLevel.PROTECTEDoptions.author
= trueoptions.version
= trueoptions.header
= project.nameoptions.addStringOption
('Xdoclint:none',
'-quiet')// suppress warnings due to cross-module @see and @link references
;// note that global
'api' task does display all warnings.logging.captureStandardError LogLevel.INFOlogging.captureStandardOutput LogLevel.INFO // suppress
"## warnings" messageoptions.encoding
= "UTF-8" //編碼一定要配置否則直接出錯options.charSet
= 'UTF-8'
}// 并將它們與項目 jar 本身一起連接到 artifacts 集合中:
artifacts
{archives javadocJar, sourcesJar
}// 將構(gòu)建的包簽名
signing
{sign configurations.archives
}//元數(shù)據(jù)定義和上傳?
uploadArchives
{repositories
{mavenDeployer
{beforeDeployment
{ MavenDeployment deployment -
> signing.signPom
(deployment
) }repository
(url:
"https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/") {authentication
(userName: ossrhUsername, password: ossrhPassword
)}snapshotRepository
(url:
"https://s01.oss.sonatype.org/content/repositories/snapshots/") {authentication
(userName: ossrhUsername, password: ossrhPassword
)}pom.project
{name
'Example Application'packaging
'jar'// optionally artifactId can be defined heredescription
"A application used as an example on how to set up pushing its components to the Central Repository."url
'http://www.example.com/example-application'scm
{connection
'scm:svn:http://foo.googlecode.com/svn/trunk/'developerConnection
'scm:svn:https://foo.googlecode.com/svn/trunk/'url
'http://foo.googlecode.com/svn/trunk/'}licenses
{license
{name
'The Apache License, Version 2.0'url
'http://www.apache.org/licenses/LICENSE-2.0.txt'}}developers
{developer
{id 'manfred'name
'Manfred Moser'email
'manfred@sonatype.com'}}}}}
}allprojects
{tasks.withType
(Javadoc
).all
{ enabled
= false }
}description
= '項目描述'
3.2 打包上傳
輸出上面的日志表示上傳成功
4、CLOSE&RELEASE
使用sonatype的賬號和密碼進入到 nexus repository manager
4.1 close倉庫
close實際是檢測倉庫的一個過程,檢測沒問題才可以發(fā)布
4.2 release倉庫
release就是將倉庫發(fā)布到maven中央倉庫,這也是我們要做的最后一步
release之后我們會收到一封report郵件
此時我們已經(jīng)可以在中央倉庫搜索到我們提交的jar包了
release之后,需要四個小時左右才能在 search.maven.org 上找到你的jar包,如果需要在 mvnrepository.com 上找到,則需要更長的時間
5、項目中驗證結(jié)果
maven中央倉庫同步到國內(nèi)的源是需要時間的,要保證項目里maven中央倉庫的優(yōu)先級在上面
repositories {mavenLocal() maven {url = uri('https://repo1.maven.org/maven2/')}maven {url = uri('https://maven.aliyun.com/repository/public')}
}
引入依賴
dependencies {implementation 'top.mstudy:commons-tool:0.0.2'
}
參考網(wǎng)址:
手把手教你提交Jar包到Maven公共倉庫
個人開源項目如何上傳maven中央倉庫
gradle發(fā)布jar包到maven倉庫遇到的問題解決
gradle發(fā)布代碼到maven中央倉庫
gradle跳過javadoc的檢查
解決idea使用gradle在打成jar包時出現(xiàn)找不到符號的問題
上傳自己的jar包到maven中央倉庫的快速操作方法
Maven 如何引入第三方本地jar包
總結(jié)
以上是生活随笔為你收集整理的发布个人项目jar包到maven中央仓库详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。