Indexing repositories

Dependency management was always one of the crucial Java project management tasks. It’s where tools such as Maven and Ivy make all the difference and allow developers to maintain their project dependencies in an easy way. There are two important elements for this to happen:

  • Centralized repositories – containing library JARs
  • Metadata – describing those JARs and creating repository structure

This is something we have for years thanks to the Maven developers. But if you ever tried to manage dependencies manually in your project, you know how tedious this task can be:

  • Find a library you want to include
  • Find out its metadata (groupid, artifactid and version)
  • Put an appropriate XML snippet in your project management definition file

I find step number two especially tedious and that’s why I’ve always thought we need an additional component to make our lives a bit easier. That missing link are “indexes” that would make repositories easily searchable and provide infrastructure for building useful tools for developers.

Fortunately, there has been some activity in this area lately. First, Eugene Kuleshov wrote about new Maven plugin for Eclipse and general purpose Nexus indexer. If you use Eclipse for the Maven-based project be sure to try this stuff out. It’s really refreshing approach to working with your poms (especially a quick search funcionality).

While I was at this, I wanted to see if there were any progress on web sites that offers similar services (which I think is important tool for Java community). mvnrepository.com has some problems with stability (and performances) lately and I was glad to see Xavier Hanin‘s new project called JavaRepo. It’s a promising start, (simple UI and useful info) and could be made into a really useful service. What I would like to see from a service like this is:

  • Ability to add additional public repositories (snapshots, etc) and snippets
    for configuring poms with appropriate repository definition
  • Ability to “subscribe” to a module and receive new release notifications in
    news readers (RSS/Atom)
  • Better result sorting (newest revisions first, relevance, etc.)

I know all this takes time to brush, but it’s great to see things are moving in the right direction.