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.

Reply via email to