Cloudsmith

The Cloudsmith Developer Hub

Welcome to the Cloudsmith developer hub. You'll find comprehensive guides and documentation to help you start working with Cloudsmith as quickly as possible, as well as support if you get stuck. Let's jump right in!

Get Started    

Maven Repository

Maven, Gradle, SBT repositories

Maven is a build automation tool primarily associated with the Java programming language. Developed by the Apache Software Foundation and released in 2004 it provides a standardised way to describe how a software project is built.

For more information on Maven, please see:

  • Maven: The official website for Apache Maven
  • Maven Central: Popular public repository for Maven artefacts

Dude, Where's my Config?

Cloudsmith provides contextual setup documentation with copy n' paste snippets (with your namespace/repo pre-configured) within the repository documentation.

What is a Maven Repository?

A Maven Repository or Maven Repo is a registry of packaged files, stored, indexed and made accessible to projects that depend on them. Each package has a unique name and version allowing for repeatable continuous integration and continuous delivery (or continuous deployment) tasks.

The Maven repository index stores metadata about each package; that the Maven tooling looks up at build time enabling pulling in of dependency projects and extensions.

What is a POM?

A POM, the Project Object Model, is the XML file that describes all the aspects of your project that relate to building and packaging the source code into a package file. Typically a jar (java archive). The metadata held within the pom.xml that is typically stored within the jar itself allows Maven to index the package into a Maven Repository for easy distribution.

How does naming and versioning work?

Maven provides a co-ordinate system of GroupId, ArtifactId and Version. These three co-ordinates allow you to specify a unique package that can be shared publicly or privately.

  • GroupId is the overall namespace and usually takes the form of a reverse domain (e.g. com.cloudsmith)
  • ArtifactId is the name of the packaged artifact (e.g. cyclone)
  • Version - is the semantic version of the package (e.g. 1.0 or 2.0.1)

Version can be suffixed to allow for higher fidelity for instance for SNAPSHOT versions typically used for nightly builds of code not to be officially released.

What is a Fat Jar?

A Fat Jar, is also referred to as an Uber Jar, is a Java Archive library that contains all classes, including all the classes of its dependencies. This allows the Jar to be run standalone without requiring any further code available on the Class Path.

The disadvantage of creating an all-in-one jar mean that you have to deploy everything (a potentially large file) each time. If you split the Fat Jar into components you can separately test, version and release code enabling faster deployments and your developers to cherry-pick components for inclusion in other projects.

Maven Repository


Maven, Gradle, SBT repositories

Suggested Edits are limited on API Reference Pages

You can only suggest edits to Markdown body content, but not to the API spec.