Table of Contents
- Maven Central Repository
- Project Preparation
- Deployment
- Publish It
- How to Find Published Product
- The Saddest Part
- Conclusion
Maven Central Repository
Maven Central Repository is the place where all Java developers publish their tools, code and projects. During last week I had to figure out how to push there my project -PolyglotCode. I started readingdocumentation on how to make my project accessible without forking it.
Let me quickly walk you through the steps I had to take before deploying the project.
Project Preparation
Prepare pom.xml
Add metadata:groupId
,artifactId
,version
,name
,license
, anddescription
.
In my case:
<groupId>io.github.mulla028</groupId><artifactId>PolyglotCode</artifactId><version>1.0</version><name>PolyglotCode</name><description>Simple CLI Tool that translates your code in ANY programming language! Powered by AI.</description><url>https://github.com/mulla028/PolyglotCode</url><licenses><license><name>MIT License</name><url>https://opensource.org/licenses/MIT</url><distribution>repo</distribution></license></licenses>
Another thing that you have to add in pom.xml isDeployment Target Configuration
. Meta data<distrubutionManagement>
which completes the separation of releases and snapshots.
<distributionManagement><repository><id>ossrh</id><url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url></repository><snapshotRepository><id>ossrh</id><url>https://oss.sonatype.org/content/repositories/snapshots/</url></snapshotRepository></distributionManagement>
GPG (GNU Privacy Guard)
You have to installGPG to sign artifacts to verify their authenticity.
Install:
brewinstallgpg
Create a Key Pair:
gpg--full-generate-key
Continue Setting Up pom.xml
After you've generated a pair of keys for gpg, we set up profile and specifying short version of key:
<profiles><profile><id>ossrh</id><properties><gpg.executable>gpg</gpg.executable><gpg.keyname>8882786B85D55E84</gpg.keyname></properties><activation><activeByDefault>true</activeByDefault></activation></profile></profiles>
Create settings.xml
After all the project preparations, you must create settings.xml inside of youMaven Configuration Directory
.
- For macOS/Linux the path is:
~/.m2/settings.xml
- For Windows:
C:\Program Files\Apache Software Foundation\maven\conf\settings.xml
The content ofsettings.xml
looks like this:
<settings><servers><server><id>ossrh</id><username><your-username></username><password><your-password></password></server></servers></settings>
and you should generate inMaven Central Repository web-site, after signing in. They provide simple copy-paste code block for your settings.xml file, so it shouldn't cause problems.
Deployment
Last one thing that we are going to add inpom.xml
is:
<plugin><groupId>org.sonatype.central</groupId><artifactId>central-publishing-maven-plugin</artifactId><version>0.6.0</version><extensions>true</extensions><configuration><publishingServerId>ossrh</publishingServerId><waitUntil>published</waitUntil></configuration></plugin>
This will allow us to usedeployment
maven command.
You are almost done, next step requires simple terminal command:
mvn deploy
Publish It
You have to go to theMaven Central Repository, and will see that you deployment is verifying, after some time, if everything goes as expected, the buttonPublish
will appear.
How to Find Published Product
InMaven Central Repository you check your product by artifactId, in my case it'sPolyglotCode
. My project looks like this:Click me :D.
Note: There you will be able to find instructions on how to integrate your project into your project.
The Saddest Part
I wasn't able to find a way how to publish my tool as CLI tool, and was only able to publish it as a component forMaven
, which you integrate, and use as a class...
To create a CLI tool next time I would use JS, TS, Rust, etc...
Conclusion
I was so excited to share with you my first ever published work. Unfortunately, it did go as I wasn't expecting :c
Top comments(0)
For further actions, you may consider blocking this person and/orreporting abuse