Skip navigation

The old JBoss Maven repository (http://repository.jboss.org/maven2) is no longer available.  This repository has been deprecated since we migrated to Nexus over a year ago and we want to make sure everyone switches over to the new repo.  I'll try to answer some common questions here.

 

What about existing builds using the old repository or rebuilding old projects dependent on the old repo?

 

If you have builds using the old repository, the recommended solution is to update the repository configuration in your POMs and/or settings.xml.  If you are unable to update the POMs, another option is to add a mirror configuration to your settings.xml.

 

   <mirror>
    <id>jboss-public</id>
    <name>JBoss Public Nexus Repository</name>
    <url>https://repository.jboss.org/nexus/content/groups/public/</url>
    <mirrorOf>jboss</mirrorOf>
  </mirror>

 

Why not just provide the new content at the old URL via redirect or other means?

 

During our migration to Nexus we reorganized the repository, and moved a lot of bad content out of the old repository.  So there isn't any new repository which contains the exact same content as the old one.  Although we may re-enable the old URL with the new content at some point in the future.

 

What if a build needs artifacts that are missing from the new repository?

 

If you find an artifact not available in the "public" Nexus group, it was probably deprecated so you should fix the dependency on that artifact.  If this is not possible, you can use the "deprecated" repository in Nexus.  More information is available on the page JBoss Deprecated Repository

 

Other questions/comments?

 

Please feel free to create a jira request (https://issues.jboss.org/browse/JBBUILD), or post in the build forum (http://community.jboss.org/en/build?view=discussions).

The JBoss.org team is happy to announce that we have begun the  process to  automatically synchronize from the JBoss.org Maven repository to the Maven Central repostiory hosted by Sonatype.  At this point, only select directories/groupIds are being regularly synced.  We're working with Sonatype to review the artifacts and POMs in the JBoss repository to correct any problems and filter out any files that may cause conflicts.  We'll be gradually adding more dirctories over the next several months.

 

Here is a list of the groupIds currently being synced on a nightly basis:

  • javassist
  • jgroups
  • org.jgroups
  • org.jboss.netty
  • org.hibernate
  • org.hornetq
  • org.resteasy

 

As we add more groupIds, the JBoss Build wiki will be updated with the latest information about what groupIds are synced and which will be synced in the near future. 

 

http://community.jboss.org/wiki/MavenRepositoryCentralSynchronization

 

If you find problems in the syncronization, or have other questions, please file a jira issue in the JBoss Build project [1], or feel free to post questions to the forum [2].

 

[1]https://issues.jboss.org/browse/JBBUILD

[2]http://community.jboss.org/en/build?view=discussions

The french company Antelink is now providing a free public mirror of the JBoss.org Maven repositories.  This repository provides a faster way for users in France and other areas of Europe to download JBoss artifacts for their builds.  The Antelink repository is running the Nexus repository manager, and includes a "public-jboss" repository group with contents matching the JBoss.org "public-jboss" group.  In addition, individual proxy repositories are provided for the hosted JBoss.org releases and thirdparty-releases repositories.  The full list of repositories can be viewed using the Nexus web interface.

 

http://maven.antelink.com/

 

Using Maven, there are several options for configuring your build repositories via the project pom and/or Maven settings.  The recommended way to use the new mirror without affecting existing POM configuration, is to use the Maven mirror settings located in Maven settings.xml.

 

  <mirrors>
    ...
    <mirror>
      <id>antelink-public-jboss-mirror</id>
      <name>Antelink mirror of the JBoss.org Maven repository</name>
      <url>http://maven.antelink.com/content/groups/public-jboss/</url>
      <mirrorOf>jboss-public-repository-group</mirrorOf>
    </mirror>    ...
  </mirrors>

 

Note: The antelink mirror does not include the JBoss snapshots repository, so this may need to configured separately if your build requires snapshot artifacts.

 

Thanks to Antelink for providing this mirror!

As part of the upcoming process to start automatically syncing Maven artifacts between repository.jboss.org and Maven central (repo1.maven.org) we will be enforcing several artifact validation rules.  In the past we have had problems with some of the Nexus validation rules, but these issues should now be resolved.  The validation rules currently in effect are the following:

 

Artifact Uniqueness Validation - Each staged artifact in a release must be unique to prevent uploading duplicate files.

Checksum Validation - The uploaded checksum of each file is checked against the file.

POM Validation - Several fields of the POMs are validated.

Sources Validation - There must be a -sources.jar file for each uploaded binary jar.

 

More information about the staging rules are available in the Nexus Book.  Before staging any release, please check that your project configuration matches the JBoss.org Maven Project Configuration Requirements.

 

In addition, it will eventually be required that all artifacts uploaded to repository.jboss.org include a valid PGP signature.  I'll be adding information about how to do this to the wiki, and probably write a separate blog post.  For information about how to generate a PGP signature for your project files, see the Maven GPG plugin.

The repository.jboss.org Nexus repository indexes and the search features of the repository now seem to be working correctly.  We've had multiple problems in the past correctly generating repository indexes, but after upgrading to Nexus 1.9.0.2 and migrating away from our old audit plugin (now replaced by the standard Nexus upload tracking), the index generation works correctly.  The repository search also has an improved UI and seems significantly faster than our old Nexus configuration.

 

NexusSearchScreenshot.png

Nexus hosted on repository.jboss.org has been upgraded from version 1.7.1 to 1.9.0.2.  This upgrade brings numerous bug fixes and improvements to the web interface including an improved search.  For a more details about the  changes, see the jira release notes for Nexus 1.8.0 and Nexus 1.9.0.

 

As part of this upgrade we will also be regenerating all of the repository indexes.  This process may take a few days to a week to complete for all of the repos, so please be patient if the search or other index related features are not fully functional at first.

 

Relevant to JBoss.org users, the Nexus archetype plugin is now a standard part of Nexus which should resolve some issues we've been facing with the generation of archetypes.xml.

 

This version of Nexus also comes with an improved UI for viewing audit information.  You can now browse to an artifact in a repository in the Nexus UI, and select the "Artifact Information" tab.  This will display the user who uploaded the artifact and the time which it was uploaded. 

NexusAudit.jpg

The older artifacts (migrated from the old repo) will not have the correct user and date information.  The audit info for these artifacts is still availalbe via the audit.json files.  We will be working in the coming weeks to migrate this information into the standard Nexus format.

We ran into an issue today where someone uploaded a bad version of a POM to the JBoss "thirdparty-uploads" repository.  This was taking priority over the correct POM in central, and causing build issues.  So here are some quick rules about how to correctly deploy to the JBoss Nexus repository.

 

Deploying a JBoss Project Release

If you are a developer of a JBoss project and you are uploading a project release you should upload to the staging URL

 

https://repository.jboss.org/nexus/service/local/staging/deploy/maven2/

More information is available on the page Maven Deploying a Release

 

Deploying a Thirdparty Project Release

If you are a JBoss developer and you need to patch and rebuild a thirdparty project, from Apache for example, you should follow these steps.

  1. Check out the upstream sources
  2. Apply any required patches (these should also be submitted to the upstream project, if possible)
  3. Add a jbossorg qualifier to the version in the POM (see Maven Deploying a Thirdparty Release )
  4. Deploy the artifact(s) the same way JBoss releases are deployed.  Nexus will automatically stage these artifacts to go to the "thirdparty-releases" repository based on the Maven groupId.

 

Uploading a Thirdparty Binary Artifact

If you want to make a thirdparty released jar available in the JBoss repository, you should first check if the jar is already available in a thirdparty Maven repo.  If yes, then you can request that a new proxy repository be added to repository.jboss.org using the JBBUILD jira project.  The proxy repository can then be used via one of the main JBoss repo URLs.

 

If it is not available in any repository, then you can upload the artifact by following the instructions in the page Uploading a Thirdparty Artifact

There are some minor differences in the repository metadata generated by Maven 3 vs. what was generated in earlier versions of Maven.  This can cause some strange install/deploy errors if you use two different versions of Maven to deploy snapshots of the same project.  For example, if you use Maven 3 to deploy a snapshot, and then use Maven 2.0.9 (or earlier version) to deploy another snapshot of the same project, you will get an XML parse error.

 

[ERROR] BUILD ERROR

[INFO] ------------------------------------------------------------------------

[INFO] Error installing artifact's metadata: Error installing metadata: Error updating group repository metadata

 

expected START_TAG or END_TAG not TEXT (position: TEXT seen ...<extension>jar</... @13:25)

 

Fortunately, this only has an effect if you are using two versions of Maven deploying to the same location (groupId, artifactId), and it's only if you are using Maven 2.0.9.  There is also a workaround which is to use the Maven 3 property maven.metadata.legacy.

 

mvn deploy -Dmaven.metadata.legacy=true

 

It is recommended that all JBoss projects use Maven 3.

 

There is a note about the metadata change in the Maven wiki

https://cwiki.apache.org/confluence/display/MAVEN/Maven+3.x+Compatibility+Notes#Maven3.xCompatibilityNotes-UniqueSnapshotVersionsandClassifiers

Paul Gier

Nexus 1.7.1 Upgrade

Posted by Paul Gier Jul 22, 2010

We have completed the upgrade of our Nexus instance (https://repository.jboss.org/nexus/).  The upgrade went smoothly, however this upgrade requires a full rebuild of the Nexus index files.  The index generation seems to be resource intensive and is causing our Nexus instance to respond slowly to new requests.  This should be resolved sometime today when the index generation is complete.

 

There are some notable improvements in the new version.

  • The search interface is improved and you should no longer see messages like "too many results".
  • The staging repositories all all grouped together now, so you can just click on the "Staging Repositories" link to find your repo during a release.
  • Better handling of remote proxy repository failures.

 

Today we will be updating the wiki documentation which describes Nexus usage to relect changes in the new version.

If you've used repository groups in Nexus, you may have run into the issue where you see an artifact in a repository group and wonder "where did this artifact come from?"  In other words you would like to know which real (hosted) repository is actually storing the artifact.  Nexus allows you to see this and other debugging information with a spcial query at the end of the URL.  Just append "?describe" to the end of the URL of the file you are looking at.  For example, if you are looking at the jboss parent pom in the public repository group, and you want to see where it came from, the URL looks like this

 

https://repository.jboss.org/nexus/content/groups/public/org/jboss/jboss-parent/5/jboss-parent-5.pom?describe

 

The output is not well formatted, so it's a bit hard to read.  But if you look carefully you can find a field called "originatingRepositoryId" and this points to the "releases" repository.

Paul Gier

Maven Repository Magic

Posted by Paul Gier Jun 14, 2010

We have an upcoming presentation that will discuss using Maven repositories and specifically the JBoss.org Maven repositories.  The presentation will be given internally for Red Hat employees tomorrow (June 15), and then basically the same presentation will be given to the public as part of the JBoss developer webinar series (http://www.jboss.org/webinars) on June 16.  For a summary of the presentation or to register (it's free), please see the description on the webinar page.  I'm posting the presentation slides here.  They may change slightly between now and Wednesday, but probably not too much.

 

Update (July 6, 2010)

Attached the final copy of the slides which were used in the presentation.

We've made two changes to our repository configuration as brought up in the forum (http://community.jboss.org/message/545189).  The first is that the proxy repositories have been added to the public group.  This means that the public configuration can be used for both anonymous and developer builds.  This should not have an impact on existing build configurations and it should allow the recommended build configuration to be simplified.

 

The other configuration change that took place over the weekend is that the server has been configured to allow standard http requests for the public repository group (http://repository.jboss.org/nexus/content/groups/public/).  Other parts of the repository (including anything that requires a login) will still require https.  No formal performance testing has been done so far, but downloads seem to be significantly faster using standard http.

 

The wiki documentation related to the recommended Maven settings will be updated this week to reflect these changes.

We are continuing to work on improving the performance of the Maven repository.  Last week Sonatype suggested that we remove the custom-metadata-plugin due to a possible memory leak.  We also increased the amount of memory available to Nexus from 512 MB to 1024 MB.  This was done Monday (Apr 26) evening and the server was restarted.  This seems to have improved the memory issues.


We also had a problem starting last Thursday (Apr 29) where certain maven metadata files could not be downloaded.  The server logs contained an error message about too many files being open on the server.  Gradually more files became locked until the whole system became unresponsive.  After restarting Nexus, this problem disappeared.  The operating system open files limit on the server has also been increased to avoid this problem in the future.

 

This week Sonatype made a configuration change to our authentication configuration (moving the internal Nexus realm before the http realm) which should improve the performance of the security system, and reduced some of the errors/warning we were seeing in the logs.  We have also noticed some timeouts (http://community.jboss.org/thread/151522) when deploying snapshots to the server, but we have not yet determined the cause of this.

 

In the near future we're also planning to change the configuration of our QA environment (hudson) which should reduce the load on our main repository server.  We're also planning to upgrade Nexus to version 1.6.0 which includes many bug fixes.

The new Maven repository is currently experiencing some performance issues.  Downloading dependencies from the repository can take a long time or time out altogether.  This appears to be due to a large amount of memory being used by Nexus (~700mb physical and ~1200mb virtual memory).  As a temporary fix, we have restarted the Nexus instance and the performance is back to normal.  Please be patient as we try to find a more permanent solution.

 

A new wiki page has been created to track the plans for finding a longer term solution to improve repository performance.

http://community.jboss.org/wiki/MavenRepositoryPerformance

The JBoss.org team is happy to announce a new Maven repository configuration.  Starting April 19, 2010, JBoss.org will be using the Nexus repository manager to provide a more robust and fully featured set of Maven repositories.  The goal is to make it easier for JBoss.org developers to release and manage project artifacts, and easier for the JBoss users to locate and use the dependencies necessary for their builds.

 

Background

 

The old JBoss.org Maven repository consisted of a single directory structure containing all JBoss project dependencies.  This caused problems for many users because there was duplication between the JBoss repository and other Maven repositories (such as the Maven central repository).  The new JBoss system will provide a set of more focused repositories that can be used separately or grouped together into a single repository view.  Detailed information about the organization of the new repositories can be found in the JBoss wiki ( Maven Repository Organization )

 

 

The old repository URL ( http://repository.jboss.org/maven2 ) will continue to be available in a read-only mode with the existing repository content.  This means that you don't need to switch to the new repository immediately, but all new releases should be deployed to the new system, so you will need to gradually migrate to the new repositories.  The next sections provide important information to be aware of before you start using the new repository.

 

Before Getting Started

 

There are a few things you should be aware of before you switch to the new repository URLs.

 

  1. Deprecated Repository - In an effort to clean up the JBoss repository, many artifacts have been moved to a "deprecated" repository.  This repository will not automatically be visible to your builds when using the new repository group URLs.  This means that if your build currently uses one or more deprecated artifacts, the short term solution is to add extra configuration to your Maven settings.  Specific configuration information is available in the getting started pages.  The long term solution is to update your project dependencies to use artifacts from one of the release repositories.
  2. Repository Performance - The new repository is more complex and will initially be significantly slower when downloading dependencies.  This will improve over time as the proxy repositories are populated, and we will continue to work to improve any additional repository performance problems.

 

 

Getting Started for JBoss Users

The new repository provides a search interface for easily locating the files you need.  It also provides more flexibility to download only the artifacts that you need.  Instead of a single large repository containing a mix of JBoss and thirdparty artifacts, there will now be several smaller repositories which allow you to choose only JBoss project artifacts, or a larger combined set of artifacts.

 

The new repository interface is available at https://repository.jboss.org/nexus.

 

A complete guide for configuring your Maven builds is now available in the wiki Maven Getting Started - Users

 

Getting Started for JBoss Developers

 

Note: the developer repositories will be available soon after svn.jboss.org comes back on line.

 

The new repository provides several new features for JBoss developers:

  • Releases will be automatically staged for testing and review so you won't have to worry about accidentally deploying a broken release
  • Deployment to any of the repositories will now use a simple http URL instead of multiple confusing options for deployment
  • Deployments will update the repository immediately, so you won't have to wait for the repository to sync before seeing your release.
  • The combined contents of JBoss repository artifacts and thirdparty repositories will be available through a single URL, or through separate URLs depending on your choice of configuration.
  • The repository will automatically save any artifacts used from thirdparty repositories, so it will no longer be necessary to manually copy dependencies from thirdparty repositories.

 

A complete guide to configuring your environment is now available in the wiki Maven Getting Started - Developers

 

Help

 

If you can't find the answer to your question on the wiki or you find problems with the repository, please communicate these issues through the JBBUILD Jira Project or through the build system forum.

 

.