FYI: Notes on progress uploading Lucene/Solr Maven release artifacts to the Apache Nexus staging repository:
This weekend I successfully staged a fake lucene release using 'ant generate-maven-artifacts', along with the appropriate ~/.m2/settings.xml <server> entry with my credentials, and the -Dm2.repository.id and -Dm2.repository.url cmdline arguments. However, since 'generate-maven-artifacts' doesn't sign any of the artifacts, the Apache Nexus repository refused to "close" the staging repository because there were no signatures. As a result, we don't have a way to publish Maven release artifacts right now. I investigated using the Nexus "Artifact Bundle" upload capability, which accepts a jar containing a single module's POM and binary jar, with optional source and javadoc jars, and optional signatures for each, and then creates an automatically "closed" staging repository. Since Lucene/Solr has dozens of these modules, and since the Nexus interface only accepts one Artifact Bundle at a time, this mechanism would require a prohibitive amount of time to manual upload each bundle, even if creation of the bundles were automated. So I tested various forms of packaging multiple modules' artifacts&signatures in a single bundle, to see if Nexus would handle them (the short version: Nexus declined to do so): 1) Simply jar'ing the dist/maven/ contents after running 'ant generate-maven-artifacts' - this failed, first because Nexus didn't like the maven-metadata.xml files, and finally, after removing them, because although it *succeeded* in unpacking and recognizing all artifacts & signatures, Nexus placed everything under a bogus groupId representing the first directory it encounted when unpacking the bundle -- something like org/apache/lucene/lucene-analyzers/3.6.0/org/apache/lucene/lucene-*. 2) Jar'ing all POMs, artifacts&signatures in a flat layout with no directories - this failed because Nexus claimed it couldn't find any artifacts. 3) Jar'ing one level deep directories, with each module's artifacts&signatures in its own self-named directory - this failed, again because Nexus claimed it couldn't find any artifacts. I can think of two alternatives to enable publishing Maven release artifacts through the Apache Nexus repository: 1) Write a new Ant build target to stage the contents of dist/maven/ (package/maven/ for Solr), after running the 'ant generate-maven-artifact' and 'ant sign-artifacts'. 2) Write a new Ant build target, based on Maven Ant Tasks's ability to run 'mvn gpg:sign-and-deploy' from Ant, to sign the artifacts and stage everything directly to the Apache Nexus repository. #1 is the least disruptive to the current release process, in that release votes would continue to be over the Maven artifacts in the directory structure pointed to by the RC URL. #2 is the method recommended by the Sonatype-produced Maven documentation <https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide#SonatypeOSSMavenRepositoryUsageGuide-7c.DeploySnapshotsandStageReleaseswithAnt> and <https://docs.sonatype.org/display/Repository/Deploy+Snapshots+and+Stage+Releases+with+Ant>, and is used by a few other Apache projects. Unless I hear otherwise, I'll assume that #1 is the better route for Lucene/Solr, at this juncture anyway. Steve From: Steven A Rowe [mailto:[email protected]] Sent: Wednesday, March 21, 2012 4:16 PM To: [email protected] Subject: FW: [NOTICE] Phasing out maven repos on people.apache.org FYI, as of next year, we will no longer be able to publish Maven artifacts as part of a release by putting them into the ibiblio directory on people.apache.org (see Joe Schaefer's message below). When I switched the nightly Maven Jenkins jobs to deploy snapshots to the ASF Nexus snapshot repository (see <https://issues.apache.org/jira/browse/LUCENE-3825>), as part of signing Lucene/Solr up for using the repository, somebody from infrastructure deleted all contents under both the o.a.lucene and o.a.solr directories in the ibiblio directory on people.apache.org. This was expected; according to <http://www.apache.org/dev/publishing-maven-artifacts.html#signing-up>: "Move Existing Artifacts: In order to maintain the proper maven-metadata.xml files and to prevent rsync conflicts in Central, we must move all your artifacts to the new repository. We will move your artifacts from the old repository on people to the new repository and mark the folder in people as read-only to prevent accidental deployments." I plan on using my own credentials to do some test release deployments to the ASF Nexus repo. Note that there is a staging process, and I will be careful not to "promote" any of my tests to be real releases. I'll update the Lucene/Solr release wiki pages once I've got it working. Steve From: Joe Schaefer [mailto:[email protected]]<mailto:[mailto:[email protected]]> Sent: Wednesday, March 21, 2012 3:01 PM To: Apache Infrastructure Subject: [NOTICE] Phasing out maven repos on people.apache.org If your PMC does not use maven for distributing artifacts, or you have already switched to using repository.apache.org, you may disregard this notice. Along with the rsyncs for websites, we will be shutting down ALL maven repos currently hosted on people.apache.org in Jan 2013. For impacted projects please see http://www.apache.org/dev/publishing-maven-artifacts.html#signing-up Please direct all feedback on this change to [email protected]<mailto:[email protected]>. Thanks for your attention.
