<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sonatype Blog &#187; Maven</title>
	<atom:link href="http://blog.sonatype.com/people/tag/maven/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.sonatype.com/people</link>
	<description>Sonatype is transforming software development with tools, information and services that enable organizations to build better software, faster, using open-source components.</description>
	<lastBuildDate>Tue, 18 Jun 2013 15:30:05 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Use Maven to Find Security Vulnerabilities and Viral Licenses in Applications</title>
		<link>http://blog.sonatype.com/people/2012/10/use-maven-to-find-security-vulnerabilities-and-viral-licenses-in-applications/</link>
		<comments>http://blog.sonatype.com/people/2012/10/use-maven-to-find-security-vulnerabilities-and-viral-licenses-in-applications/#comments</comments>
		<pubDate>Wed, 10 Oct 2012 19:10:41 +0000</pubDate>
		<dc:creator>Bentmann Benjamin</dc:creator>
				<category><![CDATA[Insight]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[Insight Application Health Check]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=12300</guid>
		<description><![CDATA[A few months ago, we launched Insight Application Health Check. Today, I&#8217;d like to announce another way to get started tracking licensing and security issues. In this post, I&#8217;m going to show you how to scan your project with nothing more than Maven and an existing project. You can get started with Insight without having [...]]]></description>
				<content:encoded><![CDATA[<p>A few months ago, we launched <a href="http://www.sonatype.com/people/2012/07/insight-application-health-check-scan-your-application-for-security-and-licensing-issues-in-minutes/" target="_blank">Insight Application Health Check</a>. Today, I&#8217;d like to announce another way to get started tracking licensing and security issues. In this post, I&#8217;m going to show you how to scan your project with nothing more than Maven and an existing project. You can get started with Insight without having to download a client or server. All you&#8217;ll need to do is run a simple plugin from the commandline.</p>

<p>To enable users to scan their applications, we provide an executable JAR with a graphical user interface. With this interface users are a few clicks away from results. But, even with this GUI, some users want to be able to use Insight&#8217;s Application Health Check from the command-line because sometimes &#8220;clicking&#8221; isn&#8217;t the most effective way to get something done. If you&#8217;re building your application using <a href="http://maven.apache.org" target="_blank">Apache Maven</a>, you probably already have a terminal window open to invoke its build phases. So, while you&#8217;re in there, adding or updating some dependencies in your POM and repackaging your application, why not check whether this dependency update introduced some security vulnerability or license issue, especially if it&#8217;s as easy as adding another goal to your command line? Meet the Application Health Check Maven Plugin:</p>

<pre>mvn package com.sonatype.insight:ahc:run -D ahc.email=my.name@mycompany.com</pre>

<p><span id="more-12300"></span></p>

<p>Right after all artifacts making up your application have been built, the <code>ahc:run</code> goal will collect their fingerprints and send them to the Insight service. The Insight service will match these fingerprints against a database of OSS licensing and security vulnerability data and identify potential problems. A few minutes after the plugin has uploaded the data, you receive an email with a link to your <a href="http://www.sonatype.com/Products/Insight-App-Health-Check/View-A-Report" title="Sample Report" target="_blank">free Application Health Check report</a>.</p>

<pre>[INFO] --- ahc:1.21.2:run (default-cli) @ my-application ---
...
[INFO] Scan completed in 4 seconds
[INFO] Number of directories: 0
[INFO] Number of archives: 37
[INFO] Number of files: 3017
[INFO] Number of errors: 0
[INFO] Uploading scan to https://insight.sonatype.com/
[INFO] Report information will be emailed to my.name@mycompany.com 
       from insight-notification@sonatype.com
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS</pre>

<p>Notice that you didn&#8217;t need to modify your POM to run the plugin. Nothing had to change. In fact, the plugin runs as well without a POM,
prompting you for the WAR/EAR/ZIP/TAR.GZ/etc. to be scanned. So whenever you&#8217;re in a terminal window and have Maven
installed, Application Health Check is right at your fingertips to tell you about security or license issues.</p>

<p>Of course, if you use the plugin on a regular basis to check your apps without having to pass in the full groupId and artifactId of the plugin you just have to make a few tweaks to your Maven settings file. Add the following settings file:</p>

<p><code>${user.home}/.m2/settings.xml</code></p>

<p>Then, enter the XML below in it:</p>

<pre>&lt;settings&gt;
...
  &lt;pluginGroups&gt;
    &lt;pluginGroup&gt;com.sonatype.insight&lt;/pluginGroup&gt;
...
  &lt;/pluginGroups&gt;
  &lt;profiles&gt;
    &lt;id&gt;insight&lt;/id&gt;
    &lt;properties&gt;
      &lt;ahc.email&gt;my.name@mycompany.com&lt;/ahc.email&gt;
    &lt;/properties&gt;
  &lt;/profiles&gt;
  &lt;activeProfiles&gt;
    &lt;activeProfile&gt;insight&lt;/activeProfile&gt;
  &lt;/activeProfiles&gt;
&lt;/settings&gt;</pre>

<p>That blob of XML makes <code>mvn package ahc:run</code> a no-brainer. If you have a project and you want to get started tracking OSS licenses and vulnerabilities, this is the way to get started. We&#8217;ll scan your project and then send you an email with the results of the scan.</p>

<p>The plugin has a few more optional parameters e.g. to exclude proprietary packages or customize the report label. Just check out our <a href="https://support.sonatype.com/entries/22022541-how-do-i-use-the-application-health-check-maven-plugin" target="_blank">knowledge base</a> for the details.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2012/10/use-maven-to-find-security-vulnerabilities-and-viral-licenses-in-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Download it All at Once: A Maven Idea</title>
		<link>http://blog.sonatype.com/people/2012/08/download-it-all-at-once-a-maven-idea/</link>
		<comments>http://blog.sonatype.com/people/2012/08/download-it-all-at-once-a-maven-idea/#comments</comments>
		<pubDate>Tue, 28 Aug 2012 15:31:17 +0000</pubDate>
		<dc:creator>Tim O'Brien</dc:creator>
				<category><![CDATA[Maven]]></category>
		<category><![CDATA[Sonatype]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=12004</guid>
		<description><![CDATA[Consider, for a moment, your big corporate project that you work with every day. I know. It&#8217;s huge. I see several of these projects on a constant basis. Maybe you have one big project with multi-modules. Maybe you have a more mature approach that splits up a very large project into several multi-module projects. Whatever [...]]]></description>
				<content:encoded><![CDATA[<p>Consider, for a moment, your big corporate project that you work with every day.   I know.  It&#8217;s huge.  I see several of these projects on a constant basis.   Maybe you have one big project with multi-modules.   Maybe you have a more mature approach that splits up a very large project into several multi-module projects.   Whatever it is, there&#8217;s a chance that you also work in the kind of environment that has a huge build with hundreds of dependencies that spans tens of thousands of lines of code.   Your build spends most of the day juggling dependencies, both internal and external</p>

<p>&#8230;and, the build takes <b>forever</b> the first time you run it.   Correction, the build takes <b>forever</b> every time you run it because it is just that big, and because you have the sort of environment that demands you always check for snapshot updates.  Welcome to the reality of using Maven on a very large-scale project.</p>

<p><span id="more-12004"></span></p>

<p>What happens when a new programmer rolls up and runs the build for the first time?   What happens every night when you clear a CI build&#8217;s local repository?   Maven downloads the Internet.  That&#8217;s what happens.  No really, Maven downloads MBs of dependencies from a repository, and it does so one-by-one pulling dependency metadata, POMs, and binaries down from a repository.  It makes hundreds (if not thousands of requests) back to a repository.</p>

<h2>Wasting Time</h2>

<p>I&#8217;d like to put forward the idea that this is a problem with the design of the tool.   Maybe it wasn&#8217;t a problem years ago, but it is today.   I&#8217;m both busy and impatient, and I can see a better way.   If the repository already has artifacts, metadata, and dependency information why not save some time.   Maven (or Gradle or Ant or whatever your poison) should make a single request, passing in a collection of GAV coordinates and the repository should be able to calculate all of the dependency information sending back a compressed archive of everything a build would need.</p>

<p>This.  I want this:</p>

<p><center>
<img src="http://www.sonatype.com/people/wp-content/uploads/2012/08/the-problem-with-repositories1.png" alt="" title="the-problem-with-repositories" width="427" height="231" class="aligncenter size-full wp-image-12010" />
</center></p>

<h2>Making Maven more like Git</h2>

<p>Let&#8217;s look to Git as an inspiration for how Maven should work going forward.   Git makes a single request to a server, the server bundles up everything Git needs, compresses it and then sends down an entire repository.  Quick, no waiting for XML parsing on the client side, no pages and pages of &#8220;Downloading XYZ&#8230;&#8221; on your screen, just a simple status that updates you on compression progress and a single network interaction.  Git does it right, Maven does it wrong. Let&#8217;s fix it.</p>

<p>I shopped this idea around to a few people.  Some of the responses have been positive, but a few people have had a strong negative reactions. (&#8220;This is unnecessary.&#8221;)   I really only care about this for selfish reasons.  I have a large project, I don&#8217;t really want to have to sit next to another new developer and apologize for Maven.  In fact, on this same project we checkout a 300 MB git repository and it is fast as could be, then I have to show them how to run the Maven build&#8230; we start it and then we go for a long coffee break during which I apologize for Maven:</p>

<p style="font-size: 90%; font-style: italics; padding-left: 30px; padding-right: 30px;">&#8220;Maven isn&#8217;t like Git, it takes time to make those requests.   Maven has to download POM files, artifacts, metadata.   Then it has to create a bunch of dependency graphs and sort out conflicts.   Once those conflicts have been solved it then has to go get all the artifacts.  One by one.  I apologize, listen, the coffee&#8217;s on me, ok?&#8221;</p>

<h2>The Difference: Latency is annoying.</h2>

<p>I did some quick metrics with a real project.   Actually it is more like a megaproject.  This project has an insane number of internal dependencies.   Running the build with a prepopulated local repo takes approximately 3 minutes.  Running the build without a prepopulated local repo (against a populated Nexus repo) takes approximately 11 minutes and it downloads about 120 MB of dependencies.   That 7 minute difference is the download time (over a 100 MBps connection) plus the latency required to setup HTTP connections, parse XML, and calculate dependencies.</p>

<p>Think about that: it took Maven 8 minutes to calculate dependencies for all projects (and all Maven plugins) and then download 120 MB.   All the files, all the POMs, all the metadata was already present in Nexus.   Let&#8217;s use a 120 MB download over a 10 MBps link to establish our baseline &#8211; <strong>if all we were doing was throwing this file down to the client, it should take ~10 seconds</strong>.   I&#8217;m going to be generous and assume that it would take nexus 20 seconds to calculate all of the dependency information on the server-side (assuming that it didn&#8217;t have to retrieve anything from a proxy repo).  Let&#8217;s them assume that compression of stream of files would add another 5 seconds of overhead.</p>

<p>This is where I&#8217;d like to go.  Shift the calculation of all dependencies to the server side, send down an archive, and get rid of this back and forth between Maven and the repository.   I think we can take this 8 minute Maven dependency mess and turn it into a 35 second process that involves 25 seconds of waiting and 10 seconds of transfer.</p>

<h2>This should be easy, who&#8217;s up for the challenge?</h2>

<p>I think we can do this without having to muck with Maven.   I&#8217;m not a big fan of the Maven codebase (it&#8217;s a monster), and I&#8217;d rather not break into the tool itself.  I think we could just write a simple CLI wrapper that would interact with a Nexus REST service.   All this CLI interface would have to do is parse a pom.xml, gather a collection of dependencies and Maven plugins, and then send a request to Nexus.   Nexus would then take this collection of GAV coordinates alongside the name of a single repository group to use for artifact resolution.  Nexus would calculate the full list of transitive dependencies and then stream it back as a compressed collection of files to the CLI wrapper.</p>

<p>At this point, the CLI wrapper just unpacks everything and drops it in ~/.m2/repository.  Maven would then run as normal, not even aware of the antics of what I&#8217;m calling <b>&#8220;Maven Rides the Lightning&#8221;</b>.</p>

<p><center>
<img src="http://www.sonatype.com/people/wp-content/uploads/2012/08/lightning-plugin1.png" alt="" title="lightning-plugin" width="428" height="249" class="aligncenter size-full wp-image-12011" />
</center></p>

<p>Note, this is not my idea. <a href="https://github.com/snambi">Nambi Sankaran</a> brought this idea up during a training class several weeks ago, and I very much want to see this happen.  Nambi has created <a href="https://github.com/snambi/maven-enhanced">a Github repository</a> for this project and if you are interested it would be a good opportunity to get some like minded people together and start thinking about how this could be done.   Don&#8217;t get too excited, there&#8217;s nothing in that repo yet, but I know we have all the pieces available to make this happen.  (Plus, I would really like to see some other people create a good open source Nexus plugin.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2012/08/download-it-all-at-once-a-maven-idea/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best Strategy for Migrating from Apache Ant to Apache Maven</title>
		<link>http://blog.sonatype.com/people/2012/08/best-strategy-for-migrating-from-apache-ant-to-apache-maven/</link>
		<comments>http://blog.sonatype.com/people/2012/08/best-strategy-for-migrating-from-apache-ant-to-apache-maven/#comments</comments>
		<pubDate>Thu, 09 Aug 2012 18:49:01 +0000</pubDate>
		<dc:creator>Tim O'Brien</dc:creator>
				<category><![CDATA[Maven]]></category>
		<category><![CDATA[Nexus]]></category>
		<category><![CDATA[ant]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=11923</guid>
		<description><![CDATA[Whenever I teach a Maven training class someone invariably asks me to give some advice for migrating a large, complex Ant project to Maven. Toward the end of the class, I&#8217;ll take questions: Participant: &#8220;Could you give us some guidance for migrating Ant projects to Maven? Is there a process that you recommend to make [...]]]></description>
				<content:encoded><![CDATA[<p>Whenever I teach a Maven training class someone invariably asks me to give some advice for migrating a large, complex Ant project to Maven.   Toward the end of the class, I&#8217;ll take questions:</p>

<blockquote style="padding-left: 30px; padding-right: 30px; padding-bottom: 20px;"><i><p><b>Participant:</b> &#8220;Could you give us some guidance for migrating Ant projects to Maven?  Is there a process that you recommend to make it easier.&#8221;</p>

<p><b>My (honest) answer:</b> &#8220;If it&#8217;s a complex project, it won&#8217;t be an easy battle.  Before you go down this road you need to understand what you are signing up for.   It can be very complex, you may end up interrupting an active development cycle, and once you evaluate all of your options you might find it easier to first migrate to a repository manager.  Maven&#8217;s not the big win, moving a repository is.&#8221;</p></i></blockquote>

<p>In other words, I often find myself trying to discourage swapping build tools just for the sake of swapping build tools.   While I do believe that Maven is preferable to Ant, I think that the build space often suffers from a belief that the grass really <b>is</b> greener on the other side.   It might be, but is it greener enough to justify that work stoppage that is involved in taking a big important project and moving it to a different build technology?   Often the answer is no.  If it isn&#8217;t related to making money, switching a build system is often the last thing an enterprise wants to do.</p>

<p>In this post I&#8217;m going to talk about the process of migrating build tools starts with <a href="http://www.sonatype.com/nexus">a repository manager</a>.</p>

<p><span id="more-11923"></span></p>

<h2>Behold the Crazyant Legacy Build</h2>

<p>This system is inspired by a real system I worked on for a brief period of time a few years ago.   To protect the innocent I&#8217;ll call it the &#8220;Crazyant Legacy project&#8221;.   It was awful, and by awful I mean I wanted to run away as fast as I could only an hour after the client granted me access to the source code.</p>

<p><img src="http://www.sonatype.com/people/wp-content/uploads/2012/08/crazyant.png" alt="" title="crazyant" width="360" height="379" class="aligncenter size-full wp-image-11924" /></p>

<blockquote style="padding-left: 30px; padding-right: 30px; padding-bottom: 20px;"><i>&#8220;Wait? Why do these boxes overlap?&#8221;, you ask as I lean back in my chair laughing at your fright.    &#8220;The code modules, they overlap because they share source trees&#8221;, I continue, &#8220;there is only but one source directory in this project, yet there are many builds.   If you&#8217;ve done battle with this project, you&#8217;ll understand that this diagram is only an approximation.   Any one of the hundreds of developers that use this project could define a new project at any moment.   Good luck.&#8221;</i></blockquote>

<p>Ok, it wasn&#8217;t that dramatic, but it was close.   You had Ant projects that were referencing sourcepaths using relative directories like, &#8220;../../../../../shared&#8221;, and you had a directory called &#8220;dependencies/&#8221; which contained, you guessed it, all of the binary dependencies in unmarked jars like &#8220;SpringProj22.jar&#8221;.   You pick up a JAR named &#8220;SpringPro22&#8243; and there&#8217;s no telling what&#8217;s in that thing.  It could be Spring, maybe?  It could be Spring plus someone&#8217;s customizations?  It could be nothing?   You would ask one of the developers, but everyone is too busy because the project can&#8217;t stop to migrate to a new build system (also 80% of the developers are proud of this awful build and resent your consultant-tinkering).</p>

<p>A project like this is an unknown minefield, and when someone calls you in to &#8220;migrate the build to Maven&#8221;, you are being asked to sprint through this minefield as fast as possible.    First, you can&#8217;t just uproot the whole project and change the structure.  Second, you have to take an iterative approach to migration that involves milestones.   The alternative, which is never possible in a production environment, is to ask every stakeholder to hold off on requests for two weeks and ask developers to take two weeks of synchronized vacation during that period so you can migrate the build.</p>

<p>That&#8217;s never happening, so what&#8217;s the first milestone?</p>

<h2>Step 1: Download Dependencies from a Repository Manager</h2>

<p>Without a doubt, if your goal is to move to a new build tool your first step should have nothing to do with changing the build.   Just take a snapshot of the artifacts the build depends on, take a full accounting of the JARs and libraries this behemoth consumes, and adapt the build to download from something like Nexus.</p>

<p>And, you don&#8217;t need to be running Maven to do this.  You could run Gradle or Ivy or SBT or whatever.   The reason you want to move your build to download dependencies from Nexus is that it starts the process of decoupling external dependencies from the contents of your source code repository. It also forces you to make a record of all the builds, how they relate to one another, and what they depend upon.  This information will come in useful in a later step.</p>

<p>Step 1 likely took a week or two to complete (longer if your project is huge), but the important thing is that you didn&#8217;t have to change toolsets.   You didn&#8217;t have to ask your developers to stop, drop, and change toolsets, and no one had to tell the boss, &#8220;Oh, we&#8217;re all just sitting around because the build guy wants to fiddle with the system.&#8221;   If you carry this process through to the end, you will eventually need to interrupt active development.  Minimize this downtime by taking a phased approach.</p>

<h2>Step 2a: Publish Artifacts to a Repository</h2>

<h2>Step 2b: Adapt deployment scripts to consume binaries from a Repository</h2>

<p>After the build is consuming artifacts from <a href="http://www.sonatype.com/nexus">Nexus</a>, the next step is to start publishing the output of the project to <a href="http://www.sonatype.com/nexus">Nexus</a>.    While you are making this change you are also concurrently modifying any deployment scripts to grab binaries from Nexus.</p>

<p>Why? Because, quite often, these Crazyant legacy projects have confused development with deployment and there are a series of intricate build scripts that do things like compile the projects and deploy them to production.   You&#8217;ll want to refactor this out of your project&#8217;s source code and make your deployment scripts dependent on binary build output via Nexus.   If you do this, it&#8217;ll be easier to divide and conquer your builds and get your developers out of the business of production operations.</p>

<p>You will also be defining an interface for your software projects.   What is a software project in the context of a repository manager?   It is a build that consumes artifacts via Nexus and subsequently publishes artifacts to Nexus.   Dependencies in, artifacts out.   If you can adapt your existing build to satisfy this contract, the next step will be easier.</p>

<h2>Step 3: Carve Out Projects 1 by 1 to a New Build</h2>

<p>If you were changing a bunch of awful code what&#8217;s the first thing you would do?   Would you dive right in and start changing stuff &#8220;willy nilly&#8221;?  No, you&#8217;d write a series of unit tests.  No one goes near a brittle disaster of technical debt without first making sure that you are not changing the contract.</p>

<p>This is exactly what Steps 1, 2a, and 2b defined for your build.   Your build is producing binary output from source code and binary inputs, and your repository manager now stores both the inputs and the outputs.  If Crazyant Legacy project had 20 projects and they were all consuming and publishing to Nexus, you have a &#8220;testable interface&#8221;.</p>

<p>So should you rush everything over to Maven all at once?  No.   Take your time and carve off projects to a new Maven build one at a time.    Greenfield projects can start publishing to Maven by default, and existing projects can move at their own pace.</p>

<h2>Decouple with Repositories</h2>

<p>If you are moving to a new build system, be it Tesla, Gradle, Maven, or anything else, do yourself a favor and move to <a href="http://www.sonatype.com/nexus">Nexus</a> first.    Decoupling your projects from direct source dependencies and using tools like Maven or Gradle to consume binary artifacts from a repository will enable you to conduct a lower risk, more piecemeal approach to your build migrations.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2012/08/best-strategy-for-migrating-from-apache-ant-to-apache-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ken Rimple Interviews Brian Fox: Maven 3, Running Central, and Nexus</title>
		<link>http://blog.sonatype.com/people/2012/03/ken-rimple-interviews-brian-fox-maven-3-running-central-and-nexus/</link>
		<comments>http://blog.sonatype.com/people/2012/03/ken-rimple-interviews-brian-fox-maven-3-running-central-and-nexus/#comments</comments>
		<pubDate>Thu, 22 Mar 2012 16:44:03 +0000</pubDate>
		<dc:creator>Tim O'Brien</dc:creator>
				<category><![CDATA[Nexus]]></category>
		<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[chariot solutions]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[repository management]]></category>
		<category><![CDATA[The Central Repository]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=10511</guid>
		<description><![CDATA[Brian Fox sat down with Ken Rimple of Chariot Solutions to talk about Nexus and to put repository management in the context of recent developments with Maven. Ken Rimple and Chariot have been long-term partners with Sonatype supporting our Maven training efforts, so Ken has a lot of background about Maven to ask some interesting [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.sonatype.com/people/wp-content/uploads/2012/03/ps.gohengbg.170x170-75.jpg"><img class="alignright size-full wp-image-10512" title="ps.gohengbg.170x170-75" src="http://www.sonatype.com/people/wp-content/uploads/2012/03/ps.gohengbg.170x170-75.jpg" alt="" width="170" height="170" /></a></p>

<p>Brian Fox sat down with Ken Rimple of Chariot Solutions to talk about Nexus and to put repository management in the context of recent developments with Maven.   Ken Rimple and Chariot have been long-term partners with Sonatype supporting our Maven training efforts, so Ken has a lot of background about Maven to ask some interesting questions.</p>

<p><strong><a href="http://techcast.chariotsolutions.com/webpage/chariot-tech-cast-episode-71-brian-fox-of-sonatype-on-nexus-2-">Listen to Chariot TechCast, Episode #71, Brian Fox of Sonatype on Nexus 2</a> </strong></p>

<h3>The Legacy of Maven: Binary Reusability</h3>

<p>The interview leads off with a discussion about Maven, Maven&#8217;s history, and some of the recent developments surrounding the Maven ecosystem.   Brian identifies binary reusability and declarative builds as the two important legacies of Maven:</p>

<blockquote style="margin: 20px; font-size: 90%;">&#8220;One of the unique things that Maven brought to the table, and what may in fact be the legacy for Maven years down the road, is that it introduced the concept of having binary reusability and not rebuilding the world as everybody was used to doing.   The other aspect was making things more of a declarative model especially the dependencies.  That was all unique at the time.&#8221;</blockquote>

<h3>What it takes to Run Central?</h3>

<p>Ken and Brian discuss the introduction and development of Central from the beginning of the repository to the current iteration.   From the initial efforts to create a single coordinate system for artifacts in 2001 and 2002.    Brian&#8217;s very involved in the effort to maintain Central so this is your chance to hear Brian discuss some of the internals of the effort: how much bandwidth does Central consume? how much effort is involved in maintaining Central? and what are the day-to-day operations for running Central?</p>

<p><strong>Key quotes about Central: &#8220;We&#8217;re approaching half a Terabyte for artifact storage&#8221; and &#8220;We&#8217;re seeing 50 to 60 new projects added every day&#8221;.</strong></p>

<p>You will hear about how Nexus is used to enforce standards for artifacts added to Central from forges like Apache, JBoss, java.net, Codehaus, as well as the instance of Nexus that Sonatype provides for independent projects: <a href="http://oss.sonatype.org">http://oss.sonatype.org</a>.</p>

<h3>New Features in Nexus 2.0</h3>

<p>Brian then discusses the important features we&#8217;re introducing with <a href="http://www.sonatype.com/nexus">Nexus 2.0</a>.  Including support for .NET, the Repository Health Check, and our support for distributed proxies.</p>

<p>Again, if you haven&#8217;t listened to it, you should.   Go over to Chariot Solutions and listen to <a href="http://techcast.chariotsolutions.com/webpage/chariot-tech-cast-episode-71-brian-fox-of-sonatype-on-nexus-2-">Chariot Techcast Episode #71</a> &#8211; better yet, why don&#8217;t you just <a href="http://itunes.apple.com/us/podcast/chariot-tech-cast/id276488929">open up iTunes and subscribe to Chariot&#8217;s podcast? here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2012/03/ken-rimple-interviews-brian-fox-maven-3-running-central-and-nexus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What do cartoons have to do with build systems?</title>
		<link>http://blog.sonatype.com/people/2012/02/what-do-cartoons-have-to-do-with-build-systems/</link>
		<comments>http://blog.sonatype.com/people/2012/02/what-do-cartoons-have-to-do-with-build-systems/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 14:00:38 +0000</pubDate>
		<dc:creator>Tim O'Brien</dc:creator>
				<category><![CDATA[Maven]]></category>
		<category><![CDATA[Nexus]]></category>
		<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[build]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=9972</guid>
		<description><![CDATA[You know who this guy is? Probably not, he&#8217;s Rube Goldberg. I&#8217;m surprised by how few engineers know his work. Rube Goldberg was a cartoonist who lived from 1883-1970, he&#8217;s famous for drawing cartoons of ridiculous and inconceivably complex machines. His work was important during a time in which the world was becoming increasingly mechanized [...]]]></description>
				<content:encoded><![CDATA[<p><img src="http://www.sonatype.com/people/wp-content/uploads/2012/02/Rube_Goldberg_1928.png" alt="" title="Rube_Goldberg_1928" width="173" height="300" class="alignright size-full wp-image-9979" style="margin:5px;" /></p>

<p>You know who this guy is?  Probably not, he&#8217;s <a href="http://www.rubegoldberg.com/?page=home">Rube Goldberg</a>.</p>

<p>I&#8217;m surprised by how few engineers know his work.   <a href="http://www.rubegoldberg.com/?page=bio">Rube Goldberg was a cartoonist</a> who lived from 1883-1970, he&#8217;s famous for drawing cartoons of ridiculous and inconceivably complex machines.    His work was important during a time in which the world was becoming increasingly mechanized and automated providing a sort of cultural &#8220;steam vent&#8221; &#8211; a way for people to poke fun at machines and industry.  I&#8217;d embed his work here, but none of it is public domain, so <a href="http://www.rubegoldberg.com/?page=home">see for yourself</a> or <a href="https://www.google.com/search?q=Rube+Goldberg&#038;hl=en&#038;prmd=imvnso&#038;tbm=isch&#038;tbo=u&#038;source=univ&#038;sa=X&#038;ei=g3hBT6H1BsmCgAfo3pSzBg&#038;ved=0CGoQsAQ&#038;biw=1397&#038;bih=1058">search Google Images</a>.   (Be warned, you can spend hours looking at these cartoons.) </p>

<p>I learned about Rube Goldberg from an Engineering professor who, at the time, said, &#8220;Rube Goldberg is the most important thing you&#8217;ll learn over the next four years&#8221;.   Back then, we all thought he was joking, but it turns out that he wasn&#8217;t.  In fact, I wish more people, especially &#8220;build engineers&#8221; had some exposure to these cartoons.  If they had, they&#8217;d take a step back and realize that there has to be a better way.</p>

<p><span id="more-9972"></span></p>

<h2>&#8220;accomplishing by complex means what seemingly could be done simply&#8221;</h2>

<p>The title of this section is the Webster&#8217;s New Dictionary&#8217;s <a href="http://www.merriam-webster.com/dictionary/rube%20goldberg">definition of &#8220;Rube Goldberg&#8221;</a>.  Does this describe your internal software distribution process?  I fear it might. I&#8217;ve seen some builds and deployment procedures that convince me that people are actively trying to create new Rube Goldberg machines with SCM tools and build scripts.  Almost every month I see some new variation of what I eventually characterize as a &#8220;Crazy Rube Goldberg&#8221; approach to releasing software.  Systems that barely work, and that no one dares to change for fear of breaking some crazy contraption.</p>

<p>Goldberg&#8217;s cartoons and the build&#8217;s inspired by them share common characteristics.    The complexity of his cartoons are almost always defined by the complex ways in which some object is transported from one &#8220;stage&#8221; of the cartoon to the next and the comic &#8220;indirection&#8221; involved in every process.</p>

<p>A cartoon example, a man slips and falls, stepping on a switch which then activates a mechanical hand that throws a bag of sand on to a scale which then triggers a mechanism to fire an arrow at a balloon.   A build example, Jeff runs a build on his laptop because that&#8217;s the only place release builds work properly, he then checks the WAR into Subversion and then sends a series of emails to several other people.  A deployment engineer then takes the output of Jeff&#8217;s build and runs it through a custom, somewhat confusing Perl script to customize a series of configuration variables.</p>

<h2>Common Characteristics</h2>

<p>The common characteristics between Rube Goldberg cartoons and Rube Goldberg builds are:</p>

<ul>
   <li>
     <p><b>Unnecessary Indirection</b></p>
     <ul>
        <li><b>Cartoon:</b> Instead of just creating a machine to pop a balloon, a cartoon creates a contrived process that involves unnecessary (and often impractical) indirection involving pulleys.  Goldberg&#8217;s cartons often find inventive ways to convert potential energy to kinetic energy in some fantastic way you wouldn&#8217;t have thought of.</li>
        <li><b>Awful Build:</b> Instead of using a technology to keep track of binary artifacts, a Rube Goldberg build overloads SCM or (worse) email to send multimegabyte binaries around.  Instead of using a technology with built in support for automatic email notification, your build relies on some ad-hoc system of people remember to send just the right individuals a set of process-related emails.</li>
      </ul>
    </li>   
    <li>
      <p><b>Reliance on the Unlikely</b></p>
      <ul>
        <li><b>Cartoon:</b> A bag of sand thrown across a room lands exactly on a bulls eye of a target triggering yet another unlikely series of events, continue, repeat&#8230;</li>
        <li><b>Awful Build:</b> A complex build that takes more than an hour to complete has a random dependency on a web service that provides an series of configuration variables used to configure a binary for production.   If the web service happens to be unavailable, or if it returns invalid results, the entire build process must be started from scratch.</li>
      </ul>
    </li>
    <li>
      <p><b>Reliance on Animals (or Humans)</b></p>
      <ul>
        <li><b>Cartoon:</b> One of the comic elements almost always present in a Goldberg cartoon is the presence of an animal of some sort.  A bird who, when hit with an arrow squawks loud enough to scare a dog into running and subsequently lifting a weight via a pulley system.</li>
        <li><b>Awful Build:</b> Awful build systems frequently require direct human intervention to the point where the build doesn&#8217;t work unless the same individual is always &#8220;strapped&#8221; into the build in just the right way.   &#8220;After that compilation step completes, Jack usually logs in and modifies the build number before he runs the deployment script&#8221;.</li>
      </ul>
   </li>
   <li>
     <p><b>Comedy</b></p>
     <ul>
        <li><b>Cartoons:</b> Rube Goldberg&#8217;s cartoons are comedic because they involve the impractical or the impossible.   Readers find them amusing because they are plausible, yet inadvisable ways to implement a process.
        <li><b>Rube Goldberg-style builds</b> are comedic because they involve the impractical or the impossible.  Developers find them amusing because they are plausible, yet inadvisable ways to implement  a process.</li>
      </ul>
    </li>
 </ul>

<p></tr><br />
</table></p>

<h2>Build/Deploy systems are Comedy?</h2>

<p>If they work, they can be.    It&#8217;s quite common for the build/deploy lifecycle at a corporation to involve a series of steps that no one fully comprehends.   Maybe there&#8217;s a crazy 4000 line Ant script or maybe there&#8217;s a multi-headed Hydra of bash magic that happens to produce a working system.   In the last few months I&#8217;ve talked to people with build systems that work, but no one on staff understands how.  When you ask about these release procedures people often chuckle a bit &#8211; &#8220;Oh, right, our release process&#8230;. well let&#8217;s say it&#8217;s a little confusing&#8230;&#8221;. </p>

<p>&#8220;Why does the build do it like this?&#8221; is often met by, &#8220;I don&#8217;t know, but I&#8217;m too scared to change this thing right now, the contractor left us with this and it works&#8230; for now.&#8221;   In other words, many of these builds involve a series of unknown pulleys and unexpected indirections that resemble a cartoon.</p>

<p>In the next part of this series, we&#8217;re going to talk about how Nexus can be used to untangle a build into something more reasonable.   Something that doesn&#8217;t involve pulleys, magic, and a series of unlikely events.</p>

<p style="font-size: 85%;"><b>Note:</b> Rube Goldberg doesn&#8217;t do it for you?  Then just watch the <a href="http://www.youtube.com/watch?v=qybUFnY7Y8w">OK Go video &#8220;This Too Shall Pass&#8221;</a> to get a modern idea of what I&#8217;m talking about.   If you haven&#8217;t seen that, you should.   In fact, if you haven&#8217;t seen this video yet, stop reading our boring Nexus blog and take a break, it&#8217;s worth it.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2012/02/what-do-cartoons-have-to-do-with-build-systems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Video: Multi-master configuration for Nexus</title>
		<link>http://blog.sonatype.com/people/2011/07/video-multi-master-configuration-for-nexus/</link>
		<comments>http://blog.sonatype.com/people/2011/07/video-multi-master-configuration-for-nexus/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 13:00:09 +0000</pubDate>
		<dc:creator>hloney</dc:creator>
				<category><![CDATA[Maven]]></category>
		<category><![CDATA[Nexus]]></category>
		<category><![CDATA[GetSatisfaction.com]]></category>
		<category><![CDATA[Nexus OSS]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=8416</guid>
		<description><![CDATA[Some questions about syncing Maven repositories between two sites were recently asked on GetSatisfaction.com. &#8220;We will be moving data centers and want to setup another Maven2 repo that is managed with Nexus OSS. We want both repositories to be online and read\writeable until we migrate all our environments to the new site. I have a [...]]]></description>
				<content:encoded><![CDATA[<p>Some questions about syncing Maven repositories between two sites were recently asked on <a href="http://getsatisfaction.com/sonatype/topics/options_for_syncing_maven2_repo_between_two_sites" target="_blank">GetSatisfaction.com</a>.</p>

<blockquote><em>&#8220;We will be moving data centers and want to setup another Maven2 repo  that is managed with Nexus OSS. We want both repositories to be online  and read\writeable until we migrate all our environments to the new  site. I have a few questions:</em>
<ol>
    <li><em>What is the best method for copying the repo to the new location?</em></li>
    <li><em>What is the best method for keeping the two repos in sync? We want to minimize network bandwidth usage.&#8221;</em></li>
</ol>
</blockquote>

<p><strong>The video below answers these questions, and offers multiple solutions:</strong></p>

<p><object width="600" height="371"><param name="movie" value="http://www.youtube.com/v/T0buDLODq0g?version=3&amp;hl=en_US&amp;rel=0" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed type="application/x-shockwave-flash" width="600" height="371" src="http://www.youtube.com/v/T0buDLODq0g?version=3&amp;hl=en_US&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2011/07/video-multi-master-configuration-for-nexus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Next Webinar: Improving Your Java development with Apache Maven 3 and Hudson</title>
		<link>http://blog.sonatype.com/people/2011/06/next-webinar-improving-your-java-development-with-apache-maven-3-and-hudson/</link>
		<comments>http://blog.sonatype.com/people/2011/06/next-webinar-improving-your-java-development-with-apache-maven-3-and-hudson/#comments</comments>
		<pubDate>Wed, 01 Jun 2011 23:38:44 +0000</pubDate>
		<dc:creator>Emily Blades</dc:creator>
				<category><![CDATA[Webinar]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Sonatype webinar]]></category>
		<category><![CDATA[webinar]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=8285</guid>
		<description><![CDATA[Next week, Jason will be presenting the webinar: Improving Your Java Development with Apache Maven 3 and Hudson. All registrants will receive access to the recording after the event so if something comes up and you can’t make it, you won’t be missing out.  Be sure to register today! Improving Your Java development with Maven [...]]]></description>
				<content:encoded><![CDATA[<p>Next week, Jason will be presenting the webinar: Improving Your Java Development with Apache Maven 3 and Hudson. All registrants will receive access to the recording after the event so if something comes up and you can’t make it, you won’t be missing out.  Be sure to <a href="https://sonatype.webex.com/sonatype/onstage/g.php?t=a&amp;d=572689602"><strong>register today!</strong></a></p>

<p><strong>Improving Your Java development with Maven 3 and Hudson</strong></p>

<p>Tuesday, June 7, 2011 @ 10:30AM &#8211; 11:00AM EDT (UTC/GMT &#8211; 0400)</p>

<p>Presenter: Jason van Zyl, Sonatype CTO &amp; Founder</p>

<p>Attend this webinar to learn about the advantages of upgrading to Apache Maven 3, including improved speed, greater stability and increased compatibility. Jason will also talk about the greatly improved support for Maven 3 within Hudson that is easy to configure and supports complex build scenarios with ease. We will cover the Eclipse IDE integration for both Maven and Hudson that improves developer productivity.
<strong></strong></p>

<p><strong>
<a href="https://sonatype.webex.com/sonatype/onstage/g.php?t=a&amp;d=572689602">Register now!</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2011/06/next-webinar-improving-your-java-development-with-apache-maven-3-and-hudson/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tycho: Building Eclipse plugins with Maven</title>
		<link>http://blog.sonatype.com/people/2011/04/tycho-building-eclipse-plugins-with-maven/</link>
		<comments>http://blog.sonatype.com/people/2011/04/tycho-building-eclipse-plugins-with-maven/#comments</comments>
		<pubDate>Wed, 27 Apr 2011 13:00:16 +0000</pubDate>
		<dc:creator>hloney</dc:creator>
				<category><![CDATA[Tycho]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=8025</guid>
		<description><![CDATA[As part of the Eclipse Live series of webinars, Sonatype software developer Pascal Rapicault is giving a presentation on Tycho: Building Eclipse plugins with Maven. About the webinar: Tycho is a set of Maven plugins and extensions for building Eclipse plugins and OSGI bundles with Maven. Eclipse plugins and OSGI bundles have their own metadata [...]]]></description>
				<content:encoded><![CDATA[<p><!--dzoneZ=none-->As part of the Eclipse Live series of webinars, Sonatype software developer Pascal Rapicault is giving a presentation on <strong>Tycho: Building Eclipse plugins with Maven.</strong></p>

<p><strong>About the webinar:</strong></p>

<p>Tycho is a set of Maven plugins and  extensions for building Eclipse plugins and OSGI bundles with Maven.  Eclipse plugins and OSGI bundles have their own metadata for expressing  dependencies, source folder locations, etc. that are normally found in a  Maven POM. Tycho uses native metadata for Eclipse plugins and OSGi  bundles and uses the POM to configure and drive the build. Tycho  supports bundles, fragments, features, update site projects and RCP  applications. Tycho also knows how to run JUnit test plugins using OSGi  runtime and there is also support for sharing build results using Maven  artifact repositories.</p>

<p>Join this webinar to get an overview of the Tycho project and to learn what plans the project has for the future.</p>

<ul>
    <li><strong>Date</strong>: May 3, 2011</li>
    <li><strong>Time</strong>: 9:00 am PST / 12:00 pm EST / 4:00 pm UTC / 6:00 pm CET</li>
    <li><strong>Length</strong>: 60 minutes</li>
    <li><a href="http://live.eclipse.org/node/1003" target="_blank"><strong>Enroll here!</strong></a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2011/04/tycho-building-eclipse-plugins-with-maven/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>m2eclipse: The collaboration of the Maven &amp; Eclipse Platforms</title>
		<link>http://blog.sonatype.com/people/2011/04/m2eclipse-the-collaboration-of-the-maven-eclipse-platforms/</link>
		<comments>http://blog.sonatype.com/people/2011/04/m2eclipse-the-collaboration-of-the-maven-eclipse-platforms/#comments</comments>
		<pubDate>Fri, 15 Apr 2011 14:00:00 +0000</pubDate>
		<dc:creator>hloney</dc:creator>
				<category><![CDATA[m2eclipse]]></category>
		<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[EclipseCon]]></category>
		<category><![CDATA[m2e]]></category>
		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=7759</guid>
		<description><![CDATA[As mentioned earlier on the Sonatype blog, we&#8217;re taking some of our most popular sessions from EclipseCon 2011, and releasing them to the wider developer community. The second installment from EclipseCon 2011 is m2eclipse: The collaboration of the Maven &#38; Eclipse Platforms. Software developer Igor Fedorenko details the new features and changes to m2eclipse 1.0, [...]]]></description>
				<content:encoded><![CDATA[<p><!--dzoneZ=none-->As mentioned earlier on the Sonatype blog, we&#8217;re taking some of our most popular sessions from EclipseCon 2011, and releasing them to the wider developer community. The second installment from EclipseCon 2011 is <strong>m2eclipse: The collaboration of the Maven &amp; Eclipse Platforms.</strong></p>

<p>Software developer Igor Fedorenko details the new features and changes to m2eclipse 1.0, including pom.xml editor enhancements and reworked build lifecycle mapping.</p>

<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="405" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/-6G00KFONrw?fs=1&amp;hl=en_US&amp;rel=0" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="500" height="405" src="http://www.youtube.com/v/-6G00KFONrw?fs=1&amp;hl=en_US&amp;rel=0" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>

<p>For more videos from the Sonatype team, visit our <a href="http://www.sonatype.com/videos.html" target="_self">Resource Center</a>, or go to our <a href="http://www.youtube.com/user/sonatype" target="_blank">YouTube channel</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2011/04/m2eclipse-the-collaboration-of-the-maven-eclipse-platforms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Watch the Hudson Integration Webinar Replay</title>
		<link>http://blog.sonatype.com/people/2011/03/watch-the-hudson-integration-webinar-replay/</link>
		<comments>http://blog.sonatype.com/people/2011/03/watch-the-hudson-integration-webinar-replay/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 14:00:00 +0000</pubDate>
		<dc:creator>hloney</dc:creator>
				<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[Hudson Integration]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[nexus professional]]></category>
		<category><![CDATA[Sonatype webinar]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=7653</guid>
		<description><![CDATA[If you missed Sonatype&#8217;s latest webinar, the Future of Hudson Continuous Integration, you can catch the replay right on Sonatype.com. To view the replay, click here. Our next webinar &#8211; Hudson Continuous Integration with Sonatype Professional &#8211; is taking place on March 29. If your development team is looking for best practices for integrating Maven, [...]]]></description>
				<content:encoded><![CDATA[<p><!--dzoneZ=none-->If you missed Sonatype&#8217;s latest webinar, the Future of Hudson Continuous Integration, you can catch the replay right on Sonatype.com.</p>

<h4>To view the replay, <a href="http://go.sonatype.com/forms/20110315_webinardownload_hudsonfuture" target="_blank">click here</a>.</h4>

<p>Our next webinar &#8211; Hudson Continuous Integration with Sonatype Professional &#8211; is taking place on March 29. If your development team is looking for best practices for integrating Maven, Hudson and Nexus Professional this webinar is for you.</p>

<p><span id="more-7653"></span></p>

<p>Sonatype Professional is the only integrated suite created for  Maven-centric builds. The suite includes Sonatype Certified &amp;  Integrated Distributions of: Maven, Hudson, Nexus Professional, Eclipse  Integration, Developer Onboarding as well as support from the experts.  Register to learn how Sonatype  Professional empowers development teams to realize the promise of agile  through continuous integration, while reducing project risk.</p>

<ul>
    <li><strong>Date:</strong> Tuesday, March 29, 2011</li>
    <li><strong>Time:</strong> 9:00 am Eastern Daylight Time (New York, GMT-04:00)</li>
    <li><strong>Duration:</strong> 30 mins</li>
    <li><strong>Presenter:</strong> Blaine Mincey, Sonatype Senior Systems Engineer</li>
    <li><a href="https://sonatype.webex.com/cmp0306lc/webcomponents/widget/detect.do?siteurl=sonatype&amp;LID=1&amp;RID=2&amp;TID=4&amp;rnd=2503137833&amp;DT=-240&amp;DL=en-US&amp;isDetected=true&amp;backUrl=%2Fmw0306lc%2Fmywebex%2Fdefault.do%3Fnomenu%3Dtrue%26siteurl%3Dsonatype%26service%3D6%26main_url%3Dhttps%253A%252F%252Fsonatype.webex.com%252Fec0605lc%252Feventcenter%252Fevent%252FeventAction.do%253FtheAction%253Ddetail%2526confViewID%253D771772275%2526siteurl%253Dsonatype%2526%2526%2526" target="_blank"><strong>Register for this webinar</strong></a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2011/03/watch-the-hudson-integration-webinar-replay/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
