前段時間使用Gitee倉庫搭建了一個Maven私有倉庫,將一些開源包放到上面去,感受使用起來仍是不太方便,最近就折騰將這些包提交到Maven的中央倉庫中。項目第一次提交Maven仍是挺麻煩的,因此寫個文章Mark一下。java
註冊一個sonatype.org賬號,登錄並提交一個issue,沒錯,就是提交一個issue,具體可參考以下: git
其中:spring
New Project
;settings.xml
在Maven的settings.xml
文件中增長<server>
配置,配置你sonatype的帳號密碼,參考以下:apache
<servers> <server> <id>sonatype-nexus-snapshots</id> <username>demo</username> <password>******</password> </server> <server> <id>sonatype-nexus-staging</id> <username>demo</username> <password>******</password> </server> </servers>
pom.xml
license
、scm
、developer
信息。<licenses> <license> <name>The Apache Software License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> <distribution>repo</distribution> </license> </licenses> <scm> <tag>master</tag> <url>git@gitee.com:centy/xxl-job-spring-boot-starter.git</url> <connection>scm:git:git@gitee.com:centy/xxl-job-spring-boot-starter.git</connection> <developerConnection>scm:git:git@gitee.com:centy/xxl-job-spring-boot-starter.git</developerConnection> </scm> <developers> <developer> <name>centychen</name> <email>292462859@qq.com</email> </developer> </developers>
profile
配置,注意:distributionManagement.snapshotRepository
和distributionManagement.repository
的id需與settings.xml
中對應的server記錄ID一致;distributionManagement的url根據官方反饋的url修改。<profiles> <profile> <id>release</id> <build> <plugins> <!-- Source --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.0.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> <!-- Javadoc --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <!-- GPG --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.5</version> <executions> <execution> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin> <!--Compiler--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <source>1.8</source> <target>1.8</target> <fork>true</fork> <verbose>true</verbose> <encoding>UTF-8</encoding> <showWarnings>false</showWarnings> </configuration> </plugin> <!--Release--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.5.3</version> </plugin> </plugins> </build> <distributionManagement> <snapshotRepository> <id>sonatype-nexus-snapshots</id> <name>Sonatype Nexus Snapshots</name> <url>https://oss.sonatype.org/content/repositories/snapshots/</url> </snapshotRepository> <repository> <id>sonatype-nexus-staging</id> <name>Nexus Release Repository</name> <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> </repository> </distributionManagement> </profile> </profiles>
brew install gpg
執行安裝;gpg --gen-key
生成公私鑰,按照提示信息一步步操做,須要記住加密使用的Passphrase
,下面步驟需使用;gpg --list-keys
查看公鑰ID,經過一下命令上傳:gpg --send-keys [公鑰ID] --keyserver hkp://keyserver.ubuntu.com:11371
***-SNAPSHOT
格式,如1.0.0-SNAPSHOT
。mvn clean deploy -P release -Dmaven.test.skip=true
Deploy的時候會彈出一個輸入Passphrase
的頁面,輸入剛纔生成pgp公私鑰使用的密碼。 ubuntu
構建完成後,在https://oss.sonatype.org/content/repositories/snapshots中應該能夠找到剛剛提交的snapshot版本。服務器
***-RELEASE
或者無後綴格式,如1.0.0-RELEASE
、1.0.0
。mvn clean deploy -P release -Dmaven.test.skip=true
Deploy的時候會彈出一個輸入Passphrase
的頁面,輸入剛纔生成pgp公私鑰使用的密碼。 app
登錄https://oss.sonatype.org/,點擊左側Staging Repositories
,輸入你的group id查找,可看到deploy記錄: maven
選中Deploy記錄點擊Close
並Confirm
,刷新後會發現記錄狀態已經變成Closed
。spring-boot
再選中記錄點擊Release
並Confirm
完成發佈,發佈完成後須要等待中央倉庫同步,我是等了1個多小時才能在中央倉庫搜索出來。ui
使用mvn clean deploy
命令構建時,可能會報gpg: signing failed: Inappropriate ioctl for device
,是由於沒法彈出Passphrase頁面,須要在系統環境變量中增長export GPG_TTY=$(tty)
。
若是Deploy的時候報 Access denied to staging repository...
等錯誤,恭喜你,你的賬號權限有問題,須要再提一個issue處理該問題,可參考我提的issue。
應該是執行close操做的數據校驗有問題,好比pom.xml信息缺失等,我第一次提交的時候就沒有在pom.xml中配置project name,校驗就沒有經過。留意頁面下方Activity中的錯誤信息便可。