We use Apache Maven to build jars that that are part of a Mesos Maven artifact that can be uploaded directly to public Maven repositories like repository.apache.org and Maven Central. Mesos committers can deploy the Mesos jar to the Apache Maven repository (repository.apache.org) using the steps below. Once it is published there, it will be copied into Maven Central. NOTE: Publishing artifacts to Maven as described below requires the Mesos Java classes to be built in src/java/classes. The easiest way to do this is to run make src/mesos-0.9.0.jar. Maven will actually build a new jar itself (as opposed to just including the jar that the Make build system builds in src) at src/java/target/mesos-0.9.0-incubating.jar. In addition, Maven will create a jar containing the Java source files (src/java/target/mesos-0.9.0-sources.jar) and the Javadoc (src/java/target/mesos-0.9.0-javadoc.jar), and all three of these files, as well as an .md5 and .sha1 for each of the jars, and finally an additional *.asc signature file for each of the above files (all in src/java/target). We don't have to vote on the jars for a release once we have voted on the release itself. Use http://www.apache.org/dev/publishing-maven-artifacts.html as a guiding document when publishing new jars, though notice that this document is targeted at projects that use Maven as their primary build system and thus have voting included in their Maven relese flow. Snapshots can also be published via repository.apache.org, though we haven't published any of those yet as of the time this README was written. The first step to releasing new version of the Mesos jar is to create and publish to a new Staging Repository in Nexus running at repository.apache.org. Instructions to do so: 1) Make sure you have necessary credentials with Apache Nexus repository for the Mesos group (org.apache.mesos). 2) Setup your servers/credentials in ~/.m2/settings.xml 3) Install gpg and setup your credentials for signing (signing is required by Apache) - follow directions in the Apache webpage linked to above. 4) To install the artifact locally: run `mvn install -f mesos.pom`, which will ask you to enter your password for gpg signing 3-4 times (once per file that is getting signed). 5) To push the artifact to "staging repository" at repository.apache.org: run `mvn deploy -f mesos.pom` from inside the src/java directory, which will also ask you to enter your password for gpg signing 3-4 times (once per file that is getting signed). If you get a 401 error when you try to deploy the artifacts, read through http://www.sonatype.com/people/2010/11/what-to-do-when-nexus-returns-401/ The above steps will create a temporary staging repository, the purpose of which is to allow you to look over what will actually get published as part of the artifact, and try it out before officially publishing it. It will be helpful to understand that Nexus (which is the software server that manages Maven repositories) provides and requires a three step process for publishing any artifact: 1) Create a new temporary "open" staging repository. Open repositories do not yet have a URL so they can't be used for testing until they are closed. Repositories in this state can be "dropped" (i.e., deleted) via a button in the Nexus web UI. 2) "Close" the staging repository - a temporary URL is assigned which can be used in Maven/Ivy/SBT to test the new artifact. Repositories in this state can be "dropped" (deleted) via a button in the Nexus web UI. 3) "Publish" the closed staging repository - I believe this is not easily reversable (i.e. repositories in this state cannot simply be "dropped).