Maven Deploying a Thirdparty Release

This page describes the process for patching, building, and releasing a thirdparty (non-JBoss) project to the JBoss.org Maven repository.

For example, your project depends on a project from Apache and the Apache project has a known issue which you want to fix.

 

Deploying a Rebuilt Thirdparty Project

 

If you are deploying a thirdparty project for which you downloaded the upstream sources and optionally patched the sources, these sources should first be made available in a public scm such as jboss.org svn or github.  Before building and uploading the project, you should modify the project POM to show that this project was built by the jboss community.  This means that you retain the original upstream groupId/artifactId but add a jbossorg qualifier to the version.  The new project version should look like the following.

 

x.y.z-n-jbossorg

 

Where x.y.z is the upstream version, and "n" is the number of times this project has been patched and released at jboss.org.

 

For example if the upstream release version is 1.2.4-beta-1, and the Java sources have no modifications the new version should be 1.2.4-beta-1-0-jbossorg.  If the Java sources have been modified the version should be 1.2.4-beta-1-1-jbossorg.  If the sources are again modified for a new release, the version should be 1.2.4-beta-1-2-jbossorg.

 

Next the scm information in the pom should be updated to point to the location of the forked sources.

 

Finally the distributionManagement should be updated to deploy to the JBoss repository.  Deployment is done using the same URL (as seen above) that you would use deploying a normal JBoss project.  The Nexus repository will automatically sort the artifacts into either "JBoss Releases" or "JBoss Thirdparty Releases" based on the project groupId.

 

As a courtesy to the members of the community (and to comply with the copyright licenses in many cases), the source jar and the full source zip file should be uploaded to the repository along with the jar files.  This source zip should use the classifier "source-release" and file type "zip".

 

For example, to upload the source jar (containing java sources):

mvn deploy:deploy-file -DpomFile=pom.xml -Dfile=commons-httpclient-3.1-1-jbossorg-sources.jar -DrepositoryId=jboss-releases-repository -Durl=https://repository.jboss.org/nexus/service/local/staging/deploy/maven2/ -Dclassifier=sources -Dpackaging=jar

 

To upload the full source zip (should include the POM and all sources required to rebuild the project):

mvn deploy:deploy-file -DpomFile=pom.xml -Dfile=commons-httpclient-3.1-1-jbossorg-source-release.zip -DrepositoryId=jboss-releases-repository -Durl=https://repository.jboss.org/nexus/service/local/staging/deploy/maven2/ -Dclassifier=source-release -Dpackaging=zip