Build automation has always been considered painful, especially for complex builds. So, it seemed like a good idea to change that and come up with a solution that would be easy to use. I want to introduce you to Tycho, the next generation of Maven plugins and tools for building Eclipse plugins and RCP applications.
Read more…
m2eclipse
eclipse, Maven, tycho
November 26th, 2008
By tim
I’m surprised at the number of organizations out there that use a tool that depends on the Maven Repository, but haven’t yet adopted a repository manager. It could be that no one has made the argument for it. No one has stood up on a platform and called people’s attention to the benefits of using a repository manager. The responses I’ve always heard from organizations that don’t use a Maven repository manager are along the lines of: “We don’t need to get that complex…,” or “Central’s fine, we don’t need to host the entire repository locally…”
Needless to say, there are a few misconceptions floating around about what a good Maven repository “is”. First, it isn’t complex to set up. It will take you a few minutes to download and install Nexus, and we’ve gone out of our way to make it as easy and non-invasive as possible. Second, a repository manager which can cache a remote repository doesn’t cache the entire thing. A good repository manager caches only what you use on an as-needed basis. Here are nine more reasons for people who might be on the fence about a repository manager.
Read more…
Nexus
Maven, Nexus
November 25th, 2008
By brian
This is a visual follow on to my previous post about the Maven version shuffling. As they say, a picture is worth a thousand words:

Need I say more?
Maven
November 25th, 2008
By tim
A common issue in Maven development is the incorporation of 3rd-party JARs into a repository. If you are working with a proprietary database like Oracle, or if you have a vendor that is supplying you with some proprietary 3rd-party JAR that needs to be incorporated into your build, what do you do? How do you get this JAR into a Maven repository that your build can access? This is a common question when people want to start publishing artifacts in a custom repository, and most Maven users might not be aware that repository managers like Sonatype Nexus provide an easy way to deploy these floating, one-off JAR files as well as a way to deploy artifacts from your own build. Read more…
How-To
Maven, Nexus
November 24th, 2008
By oleg
Mercury is a serious attempt to:
- Decouple major Maven components, making them available as stand-alone building blocks rather then having Maven as as one big monolith, not usable outside of its environment.
- Artifact - clearly separate an Artifact from its metadata.
- Repository - convert a repository into active component. It used to give back just pathOf(), now it accepts GAV collections and gives back either metadata or full blown Artifacts.
- Transport - an API in development.
- DependencyTreeBuilder main API for dependency graph creation and conflict resolution.
- Decouple container, so that these components are just plain pojos.
- Introduce Jetty-based HTTP/HTTPS and WebDAV transactional transport layer.
- Asynchronous downloads and uploads. One of the few successful usages of Java NIO in OSS.
- Transactional operations - all-or-nothing for file sets.
- Move integrity control into transport layer, upper level components should not care about these details.
- Abstract out metadata cache, provide at least one implementation there.
- Integrate these changes back to Maven 3.x to make it even better platform than it is right now (if it is possible to be better
)
Currently Mercury can already be used for accessing repositories, and conflict resolution is under testing.
Maven, Mercury
Maven, Mercury
November 24th, 2008
By tim
This post is a follow-up to the two previous posts on Ruby and Groovy which provided some sample Ruby and Groovy scripts that can be used to list repositories and search for artifacts in a Nexus instance. Today, we’re going to see how to complete the same tasks using the Python scripting language.
The following scripts are in Python and they can be invoked from the command line using python (or jython). For example, if you want to run the quick-search.py script, you would run “jython quick-search.py activemq” to search for artfiacts that contain the string “activemq”. I tested these Python scripts using the latest Jython 2.5b0 distribution with version 1.2.6 of the jython-elementtree project at Google Code. Go to the Jython page, download Jython 2.5b0, and then following the instructions on the jython-elementtree project list to check out the ElementTree library from source control and install it in your own Jython installation. These scripts don’t require Jython, the could run in any Python 2.5 implementation. Read more…
How-To
Maven, Nexus, python, scripting
November 21st, 2008
By oleg
For a long time I’ve been perplexed by what is going inside Maven, what’s there under the hood. Later I started learning the code and it gave me some perspective. Then I wrote a chunk of code - Mercury, but the exact understanding of what is happening inside is still hard to grasp: the code base is rather big and logic rather complex for a human mind to follow all the details.
All that, plus the necessity to provide tool integration, led to the idea to introduce an event framework into Mercury. All major processing object implement EventGenerator interface, that allows client code to register MercuryEventListener implementations and unRegister them as well. Read more…
Maven, Mercury
Mercury
November 21st, 2008
By tim
This post is a follow-up to the previous post which provided some sample Ruby scripts that can be used to list repositories and search for artifacts in a Nexus instance. Today, we’re going to see how to complete the same tasks using the Groovy scripting language. The Groovy scripting language is a scripting language that has gained popularity due to the ease of integration with the JVM.
The following scripts are in Groovy and they can be invoked from the command line using groovy. For example, if you want to run the QuickSearch.groovy script, you would run “groovy QuickSearch.groovy activemq” to search for artfiacts that contain the string “activemq”. I tested these Ruby scripts using the latest Groovy 1.5.7 distribution. Go to the Groovy page, click on Download, and download the Cross-platform Installer, this will install Groovy on your machine and also tell you what you’ll need to add to your PATH. Read more…
How-To
groovy, Nexus, rest, scripting
November 20th, 2008
By brian
The Nexus team has been hard at work producing a new plugin model for Nexus that allows us to create some new and exciting Professional features on top of the OSS core. The first release of Nexus Pro will contain 4 new plugins:
Staging and Promotion
Staging
and promotion is designed to allow projects to be deployed to independent, temporary repositories. The contents of this repository is then evaluated and eventually either promoted or deleted. When
promoted, it is merged in with a target repository and all appropriate metadata is updated. This implementation of Staging and Promotion requires no changes on the Maven side other than updating your distributionManagementUrl. Read more…
Maven, News, Nexus
November 19th, 2008
By tim
When you search for artifacts using http://repository.sonatype.org, the browser is querying the Nexus repository using a REST API. In this post, I’m going to show you some simple Ruby scripts which you can use to search the Maven repository without loading up the Nexus web interface. You might find these scripts more convenient and more customizable, and you should feel free to copy and modify them for your own use.
The following scripts are in Ruby and they use the REXML XML processor and the Net:HTTP library. Both of these libraries are available in the Ruby standard library. I tested these Ruby scripts using the latest JRuby release. If you want to try these scripts out on your own, they will run in any standard Ruby interpreter without requiring any extra RubyGems. Read more…
How-To
Nexus, rest, ruby