OpenJPA Logo   ASF Logo

Publishing Serp to Maven Central Repository

Serp Project

Serp is used by OpenJPA for the bytecode enhancement processing. It is maintained as a SourceForge project . Serp has been a very solid third-party dependent software project. OpenJPA has had a dependency on Serp v1.13.1 for a long time. Recently, a problem was discovered JIRA OPENJPA-2240 which required an update to Serp. Eventually, it was determined that this problem was resolved in the 1.14.1 version of Serp. Unfortunately, the last version of Serp that was published to Maven Central was version 1.13.1. This page discusses how to get an updated Serp release into the Maven Central repository.

SourceForge Serp: https://sourceforge.net/projects/serp/
Serp homepage: http://serp.sourceforge.net
Serp sourcecode: http://serp.cvs.sourceforge.net/serp

Maven Instructions

The easiest way to get the updated artifacts for Serp 1.14.1 into Maven Central was to follow the instructions on this page. You will need a GPG utility and signature (instructions on that page). You will also need a login for Sonatype's Nexus server (instructions also on that page).

Update to the Sonatype documentation...
The above referenced wiki page is no longer in service. I talked with Joel Orlina (jorlina@sonatype.com) and he pointed me at this updated documentation. We should attempt to follow these updated, simpler instructions for publishing Serp to Maven Central. But, for historical reference, Sonatype also has the original wiki page in archive.

Since this exercise shouldn't be a common occurrence, I just went the manual route and signed each of the artifacts that were built into my local repository:

> gpg -ab serp-1.14.1-javadoc.jar
> gpg -ab serp-1.14.1.jar
> gpg -ab serp-1.14.1-sources.jar
> gpg -ab serp-1.14.1.pom

And, then I created a bundle:

> jar -cvf serp-1.14.1-bundle.jar serp-*

The bundle contained:

Archive:  serp-1.14.1-bundle.jar
  Length     Date   Time    Name
 --------    ----   ----    ----
    0  09-04-12 15:23   META-INF/
       62  09-04-12 15:23   META-INF/MANIFEST.MF
   962397  09-04-12 15:21   serp-1.14.1-javadoc.jar
      499  09-04-12 15:22   serp-1.14.1-javadoc.jar.asc
   140576  09-04-12 15:21   serp-1.14.1-sources.jar
      499  09-04-12 15:21   serp-1.14.1-sources.jar.asc
   206638  09-04-12 15:21   serp-1.14.1.jar
      499  09-04-12 15:22   serp-1.14.1.jar.asc
     5508  09-04-12 15:21   serp-1.14.1.pom
      499  09-04-12 15:23   serp-1.14.1.pom.asc
 --------           -------
  1317177           10 files

This bundle is what I uploaded to the Sonatype Staging repository as outlined on that original wiki page .

Not documented..
One process point that was not documented on that original wiki page was the need for a JIRA to be created against the OSSRH project (Open Source Project Repository Hosting). This JIRA should include the Central Repository staging URL that is provided after you upload the bundle. Here's an example JIRA that worked for me. If all else fails, contact Joel Orlina, jorlina@sonatype.com.

Serp Code Updates

In order to create the -javadoc and -sources jar files, I had to make a couple of minor updates to the existing pom file for serp 1.14.1. I committed these changes to HEAD (1.14.2 snapshot) for future reference:

    <plugin>
      <artifactId>maven-source-plugin</artifactId>
      <executions>
        <execution>
        <id>attach-sources</id>
        <goals>
            <goal>jar</goal>
        </goals>
        </execution>
      </executions>
    </plugin>

    <plugin>
      <artifactId>maven-javadoc-plugin</artifactId>
      <executions>
        <execution>
        <id>attach-javadoc</id>
        <goals>
          <goal>jar</goal>
        </goals>
        </execution>
      </executions>
    </plugin>

If we continue to require changes to Serp, we may want to do more extensive changes in the maven processing to make it easier to deploy the artifacts. Several of the deployment locations in the pom.xml no longer exist. I made a couple of updates, but the permissions don't show up right, so the deployment step is still manual.

Another idea would be to consume Serp into OpenJPA as an Apache sub-project... That might be the best long-term solution. But, I will leave that for another day.

Copyright © 2006,2013 The Apache Software Foundation. Licensed under Apache License 2.0.
Apache, the Apache feather logo and OpenJPA are trademarks of The Apache Software Foundation.
Other names may be trademarks of their respective owners.