Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [cross-project-issues-dev] deploying snapshot builds from hudson.e.o to oss.sonatype.org

Just to continue this to its full logical end.

The ultimate goal, for all artifacts, is a sync to maven central.
Without that last step, nothing in eclipse can use maven central, and noone using eclipse artifacts for their OSS projects can get into maven central.
It is a requirement that the artifact you are wanting to be placed into maven central to have all of its downstream dependencies also in maven central.  No pom defined alternate repositories allowed if you want your OSS project to reach maven central.

Now, to be clear, this requirement is for release (non-SNAPSHOT) artifacts.
If, for example, gwt started to use eclipse jetty, then in order for their gwt artifacts to be put into central the eclipse jetty artifacts must also be in central.
The iron fist declaration that all artifacts must be at maven.eclipse.org is only answering 1/4th of the requirements eclipse and its community has.

Here's my suggestions:

* maven.eclipse.org is where all artifacts, produced by eclipse projects, both snapshot and release, are to be deployed to.
* maven.eclipse.org will have a release repository
* maven.eclipse.org will support release artifact staging and promotion to the release repository (this is a feature of nexus)
* maven.eclipse.org will prevent direct deployment to the release repository (this is a security configuration for nexus)
* maven.eclipse.org will reject overwriting or deleting of release artifacts (this is a rule that should be setup in nexus)
* maven.eclipse.org will reject artifacts not within the org.eclipse.* groupId space (we shouldn't be using any other groupIds anyway)
* maven.eclipse.org will have a snapshot repository
* maven.eclipse.org will coordinate with the maven central maintainers at oss.sonatype.org how to have a (1 way) sync of maven.eclipse.org release repository to maven central.  (How this is usually accomplished by oss.sonatype.org by a sync from maven.eclipse.org to an eclipse repository on oss.sonatype.org, then that repository is added to the maven central sync from oss.sonatype.org to maven central).
  - this is how google, apache, sun/oracle, and github (for example) now perform their syncs to maven central.
  - there is extra metadata produced by oss.sonatype.org to help out ivy/groovy build systems as well.
  - oss.sonatype.org mines the contents of the poms and jars to help with the search.maven.org search system as well (a system that is integrated into m2e's dependency search UI btw)
* all release artifacts on maven.eclipse.org are permanent and never deleted (a behavior of p2 repositories that is extremely problematic)
* snapshot artifact purging rules on maven.eclipse.org are up to the individual project leads.
   - pick from one of the following techniques:  
   a) purge version specific snapshots on version release.  
   b) purge snapshots based on age [1 year]
   c) manual purge of snapshots
* snapshot deployment and release staging can be done by any member of the project to their own groupId space.
* orbit dependencies are placed into org.eclipse.orbit groupId and managed by the orbit-dev teams using the orbit-maven-plugin
* build systems at build.eclipse.org can deploy snapshots automatically to maven.eclipse.org's snapshot repositories using a common snapshot repository user id.
* build systems at build.eclipse.org can never deploy release artifacts to the maven.eclipse.org release repositories, that must be performed by a committor of the project using their maven.eclipse.org credentials and build-time gpg signatures (used by maven and the repository system for artifact signing, not jar signing).
* all deployments to maven.eclipse.org should follow the same rules as content eventually destined for maven central.
  a) if packaging is jar then -javadoc.jar is required
  b) if packaging is a java type (jar, war, sar, etc.) then -sources.jar is required
  c) no internal <repository> or <pluginRepository> sections are allowed in release quality poms (ok for snapshots)
  d) along with the default required list, the following (typically optional) pom sections are required for a release artifact <scm>, <url>, <licenses>, <organization> (fortunately most of these are already done for you in the eclipse parent pom)

- Joakim
Eclipse Jetty commiter

Back to the top