blob: 2812fb14718246371abdb0ff56d0761654c6ebe2 [file] [log] [blame]
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 generated from the Protobuf file. The easiest way to do this is
to run `make src/java/target/mesos-0.27.0.jar`. In addition, Maven will create
a shaded jar that includes the protobuf classes
(src/java/target/mesos-shaded-protobuf-0.27.0.jar), a jar containing the Java
source files (src/java/target/mesos-0.27.0-sources.jar) and the Javadoc
(src/java/target/mesos-0.27.0-javadoc.jar), and all four 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 release 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).