<?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; peaberry</title>
	<atom:link href="http://www.sonatype.com/people/tag/peaberry/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.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>Wed, 23 May 2012 14:24:07 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Apache Maven Meetup Next Week!</title>
		<link>http://www.sonatype.com/people/2010/03/apache-maven-meetup-next-week/</link>
		<comments>http://www.sonatype.com/people/2010/03/apache-maven-meetup-next-week/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 14:52:50 +0000</pubDate>
		<dc:creator>hloney</dc:creator>
				<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[peaberry]]></category>
		<category><![CDATA[Tycho]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=4786</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.sonatype.com/people/2010/03/apache-maven-meetup-next-week/' addthis:title='Apache Maven Meetup Next Week! '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>It&#8217;s not too late to register for the Sonatype Maven Meetup taking place on April 7, 2010 ahead of Emerging Technologies for the Enterprise in Philadelphia.  Meet with Maven aficionados, sit in on presentations about Maven 3, Tycho, OSGi, Peaberry, and much more. Choose from a dozen different sessions throughout the day, presented by the [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.sonatype.com/people/2010/03/apache-maven-meetup-next-week/' addthis:title='Apache Maven Meetup Next Week! '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div><p><!--dzoneZ=none--><a href="http://www.sonatype.com/people/wp-content/uploads/2010/03/SMM-flyer.jpg"><img class="alignright size-medium wp-image-4602" title="SMM flyer" src="http://www.sonatype.com/people/wp-content/uploads/2010/03/SMM-flyer-200x300.jpg" alt="" width="200" height="300" /></a>It&#8217;s not too late to register for the Sonatype Maven Meetup taking place on April 7, 2010 ahead of Emerging Technologies for the Enterprise in Philadelphia.  Meet with Maven aficionados, sit in on presentations about Maven 3, Tycho, OSGi, Peaberry, and much more.</p>

<p>Choose from a dozen different sessions throughout the day, presented by the developers who are building the Maven software you&#8217;ll be using in the future.  Join us for an interactive BoF session at the end of the day, followed by a reception.</p>

<p><strong>Special Promotion &#8212; Bring a Friend for Free</strong></p>

<p>Register one attendee at the $190 standard registration rate, and have a friend join you at no charge.</p>

<p>Visit <a href="http://www.sonatype.com/meetup2010" target="_blank">www.sonatype.com/meetup2010</a> to register or for more information.  When you register, add &#8220;+1&#8243; after your name to receive the special promotion pricing for you and a friend.</p>

<p><strong><span style="font-family: Arial Black;"><span style="color: #0000ff;"><em> </em></span></span></strong></p>

<p><strong>Seating is limited</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2010/03/apache-maven-meetup-next-week/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Next Generation Maven Development Stack @ JFokus</title>
		<link>http://www.sonatype.com/people/2010/01/next-generation-maven-development-stack/</link>
		<comments>http://www.sonatype.com/people/2010/01/next-generation-maven-development-stack/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 05:21:05 +0000</pubDate>
		<dc:creator>Jason van Zyl</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[m2eclipse]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[GIT]]></category>
		<category><![CDATA[guice]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[jfokus]]></category>
		<category><![CDATA[peaberry]]></category>
		<category><![CDATA[polyglot]]></category>
		<category><![CDATA[Scala]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=4113</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.sonatype.com/people/2010/01/next-generation-maven-development-stack/' addthis:title='Next Generation Maven Development Stack @ JFokus '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>For my talk today at JFokus today I&#8217;ve taken the liberty of starting some notes for folks interested in attending. There&#8217;s a lot to cover and so I thought I would try the approach of providing some material up front so the session can be more of a dialog. I&#8217;m going to attempt to cover [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.sonatype.com/people/2010/01/next-generation-maven-development-stack/' addthis:title='Next Generation Maven Development Stack @ JFokus '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div><p>For my talk today at JFokus today I&#8217;ve taken the liberty of starting some notes for folks interested in attending. There&#8217;s a lot to cover and so I thought I would try the approach of providing some material up front so the session can be more of a dialog. I&#8217;m going to attempt to cover everything in the picture below and save the demos folks might want to see for the Sonatype booth. Happy to chat with folks and do any demos before and after the presentation. Just stop by!</p>

<p><img src="http://www.sonatype.com/people/wp-content/uploads/2010/01/Stack1.png" alt="Stack.png" border="0" /></p>

<h3>Maven Stack Infrastructure</h3>

<p>I&#8217;m going to talk about some of the under pinnings of the technologies we&#8217;re using as part of our Maven work. Why we selected the technologes and some of the current work that&#8217;s happening.
<span id="more-4113"></span></p>

<ul>
<li><a href="http://code.google.com/p/google-guice/">Guice</a></li>
<li><a href="http://www.sonatype.com/people/2010/01/from-plexus-to-guice-1-why-guice/">From Plexus to Guice (#1): Why Guice?</a></li>
<li><a href="http://www.sonatype.com/people/2010/01/from-plexus-to-guice-2-the-guiceplexus-bridge-and-custom-bean-injection/">From Plexus to Guice (#2): The Guice/Plexus Bridge and Custom Bean Injection</a></li>
<li><a href="http://www.sonatype.com/people/2010/01/from-plexus-to-guice-3-creating-a-guice-bean-extension-layer/">From Plexus to Guice (#3): Creating a Guice Bean Extension Layer</a></li>
<li><a href="http://code.google.com/p/peaberry/">Peaberry</a></li>
<li><a href="http://incubator.apache.org/shiro/">Apache Shiro</a></li>
<li><a href="http://enunciate.codehaus.org/">Enunciate</a></li>
</ul>

<h3>Maven</h3>

<p>There are several develops going on in the various Maven projects. Maven 3.x is on the way, but we have some very interesting work happing with OSGi within our Tycho project. The Flexmojos project and NAR (the C/++ framework for Maven) are also popular.</p>

<h4>Tycho</h4>

<ul>
<li><a href="http://tycho.sonatype.org/">Tycho Site</a></li>
<li><a href="http://github.com/sonatype/sonatype-tycho">Tycho @ Github</a></li>
<li><a href="http://github.com/sonatype/m2eclipse-tycho">Tycho/PDE Integration</a></li>
<li><a href="http://wiki.eclipse.org/Equinox_p2">P2 Site</a></li>
</ul>

<h4>Flexmojos</h4>

<ul>
<li><a href="http://flexmojos.sonatype.org/">Flexmojos Site</a></li>
</ul>

<h4>NAR</h4>

<ul>
<li><a href="http://duns.github.com/maven-nar-plugin/">NAR Site</a></li>
<li><a href="http://github.com/sonatype/maven-nar-plugin">NAR @ Github</a></li>
</ul>

<h3>M2Eclipse</h3>

<p>The primary IDE integration we work on at Sonatype. The most important thing to talk about in M2Eclipse is the configuration framework.</p>

<ul>
<li><a href="http://m2eclipse.sonatype.org/">M2Eclipse Site</a></li>
</ul>

<h3>Hudson</h3>

<p>Most of the work we&#8217;ve been doing on Hudson is still not really good enough for public consumption but we&#8217;re testing the changes we&#8217;re making on the Sonatype grid.</p>

<p><a href="https://hudson.dev.java.net/">Hudson Site</a></p>

<h3>Nexus</h3>

<ul>
<li><a href="http://nexus.sonatype.org">Nexus Site</a></li>
<li><a href="http://www.sonatype.com/people/2010/01/nexus-oss-ecosystem/">Nexus: Improving Maven Central and Supporting the Maven Ecosystem</a></li>
<li><a href="http://www.sonatype.com/people/2010/01/10-questions/">Selecting OSS Software: 10 Questions Answered for Sonatype Nexus</a></li>
<li><a href="http://nexus.sonatype.org/oss-repository-hosting.html">OSS Repository Hosting</a></li>
<li><a href="http://bundles.sonatype.org/index.html#welcome">OSGi Central</a></li>
<li>Ruby Central (We&#8217;re working on making that publicly available</li>
</ul>

<h3>Proviso</h3>

<p>Proviso is not publicly released yet, but Alin and I have been working together to get our provisioning framework ready for a public release.</p>

<h3>Git</h3>

<p>We are starting to use Git heavily and soon likely exclusively. We are helping out on the EGit, and JGit projects at Eclipse and we&#8217;re trying to put a little Git server together based on JGit, MINA, and Apache Shiro.</p>

<ul>
<li><a href="http://www.eclipse.org/jgit/">JGit Site</a></li>
<li><a href="http://www.eclipse.org/egit/">EGit Site</a></li>
<li><a href="http://aniszczyk.org/2010/01/25/egit-and-jgit-builds-available/">Tycho building EGit/JGit</a></li>
<li><a href="http://github.com/sonatype/sshjgit">SShJGit @ Github</a></li>
</ul>

<h3>Maven Extensions</h3>

<p>I&#8217;ll chat about these in the talk.</p>

<ul>
<li><a href="http://polyglot.sonatype.org/">Polyglot Maven Site</a></li>
<li><a href="http://github.com/sonatype/polyglot-maven">Polyglot Maven @ Github</a></li>
<li><a href="http://mvnsh.sonatype.org">Maven Shell</a></li>
<li><a href="https://github.com/sonatype/mvnsh">Maven Shell @ Github</a></li>
</ul>

<p>I&#8217;ll likely keep adding to the entry leading up the talk, but I thought I would get the ball rolling!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2010/01/next-generation-maven-development-stack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>From Plexus to Guice (#1): Why Guice?</title>
		<link>http://www.sonatype.com/people/2010/01/from-plexus-to-guice-1-why-guice/</link>
		<comments>http://www.sonatype.com/people/2010/01/from-plexus-to-guice-1-why-guice/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 19:00:55 +0000</pubDate>
		<dc:creator>Jason van Zyl</dc:creator>
				<category><![CDATA[Community]]></category>
		<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[guice]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Nexus]]></category>
		<category><![CDATA[peaberry]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=3970</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.sonatype.com/people/2010/01/from-plexus-to-guice-1-why-guice/' addthis:title='From Plexus to Guice (#1): Why Guice? '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>When we started the Maven project, dependency injection was still developing. Spring was just starting out and the Avalon project at Apache was really the only IoC framework around. While the concept seems second-nature by 2010, in 2002, it wasn&#8217;t a primary focus of the initial efforts of the Maven community but it was something [...]]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://www.sonatype.com/people/2010/01/from-plexus-to-guice-1-why-guice/' addthis:title='From Plexus to Guice (#1): Why Guice? '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div><p><a href="http://www.sonatype.com/people/wp-content/uploads/2010/01/from-plexus-to-guice1.png"><img class="alignright size-full wp-image-4024" title="from-plexus-to-guice" src="http://www.sonatype.com/people/wp-content/uploads/2010/01/from-plexus-to-guice1.png" alt="" width="250" height="62" /></a>When we started the Maven project, dependency injection was still developing. Spring was just starting out and the Avalon project at Apache was really the only IoC framework around. While the concept seems second-nature by 2010, in 2002, it wasn&#8217;t a primary focus of the initial efforts of the Maven community but it was something I felt had to be in place for the development of Maven 2. We knew we needed some sort of component framework, some standard mechanism to instantiate plugins and configure them based on a set of configuration points, and, at the time, Plexus filled the gap. Plexus was exactly what we needed because it evolved with the requirements of Maven, and I think that Plexus served us well for the past few years but it&#8217;s time to let go. I never felt compelled to switch until <a href="http://code.google.com/p/google-guice/wiki/Guice20">Guice 2.0</a>.   Guice has the capabilities and adaptability we require in Maven.</p>

<p>For all new development, we&#8217;ve decided to focus on <a href="http://code.google.com/p/google-guice/">Guice</a> and build a compatibility layer for existing components. In this post, I&#8217;m going to discuss the various factors that went into the decision to move to Guice. All of Sonatype&#8217;s product are currently developed using Guice and the Guice/Plexus integration libraries that Stuart will describe in the articles that will follow over the next few weeks, and future work on Maven 3 will be based on Guice.<span id="more-3970"></span></p>

<h3>Why Guice?</h3>

<p>We ultimately went with Guice because it provided a system that could be configured and customized at runtime. It was very close to the model that Plexus was using, and we felt that it would be easy for us to build a compatibility layer between the two. The primary motiviation in this decision was our ability to write that compatibility layer atop whatever framework we selected that would allow for backward-compatibility. You see, it isn&#8217;t good enough in a community this large to just move to a new framework and expect everyone to just scramble to rewrite Maven plugins. We had to find a way to support existing plugins, and existing extensions. We had to find a way to work with all of the existing code that was coded to Plexus and adapt that to a new engine.</p>

<p>Guice is highly adaptable. With Guice we don&#8217;t need to configure all of our components ahead of time, we can instantiate them as needed and modify the &#8220;context&#8221; with a Guice/Plexus integration layer which Stuart will describe in the following articles. The answer to &#8220;why Guice?&#8221; is explained in the code that was required to write this compatibility layer. The only way we found to make this work was by using Guice.     Other reasons included <a href="http://java.dzone.com/news/dependency-injection-and-type-">type safety</a>, <a href="http://code.google.com/p/garbagecollected/wiki/SpringAndGuiceErrors">easy-to-read error messages</a>, and <a href="http://code.google.com/p/peaberry/">OSGi support using peaberry</a>.    All of our development uses the <a href="http://code.google.com/p/atinject/">JSR330 standard @Inject anotations</a>.   We&#8217;re using JSR330 instead of Guice-specific annotations to make sure that our work is more standard and portable going forward.</p>

<h3>Focusing the Community</h3>

<p>Aside from the technical reasons to move to Guice, there are reasons that involve the community. If our audacious goal is to provide world-class build and development infrastructure support, we need to remove unnecessary distractions from our environment. We just were not focused on Plexus, and issues would come up in Plexus that needed to be supported which distracted from the core effort. We&#8217;re not just <em>using</em> Guice. Because we are starting to rely on it, we appreciate the need to work closely with a project like Guice and contribute back to that community.  Stuart is a committer, and we wanted to collaborate with others and use a framework used widely by others.</p>

<p>Maven&#8217;s goal was never to create a dependency injection framework, it was always focused on builds and the infrastructure that supports development. Not long ago, we were contemplating what it would take to improve Plexus, we looked at the effort required to document and support Plexus going forward, and it just didn&#8217;t make any sense for us to continue to apply precious time and effort to a problem that had already been solved by several others. It makes sense to focus the community, and moving to Guice will allow us to devote more of our own resources to supporting the central projects and products.</p>

<h3>Making it Easier to Extend</h3>

<p>When your project or production uses a standard tool, you increase the audience that can customize it. If the goal of Maven is to create a solid foundation of infrastructure for others to build upon, it only makes sense to adopt something more standard. Maven and products like Nexus should be judged by the number and variety of plugins that have been developed for them, and this is something that attract most new users to Maven (the abundance and variety of Maven plugins). Anything we can do to make it easier to extend these systems is the right thing to do for the &#8220;ecosystem&#8221; I described last week.</p>

<p>If you wanted to write a plugin for the initial version of Nexus two years ago, you would have had to know a lot about Plexus. There was nothing particularly wrong with Plexus, it had a well-defined interface and it served its purpose, but there wasn&#8217;t very much documentation, and requiring some knowledge of Plexus for plugin developers was reducing the size of potential developers. In the past year, we&#8217;ve made a course correction, and you can write a Nexus plugin without having to learn any dependency injection framework. What has made this transition possible is the flexibility of Guice.</p>

<h3>Summary</h3>

<p>Stuart&#8217;s going to dive into the technical details in the next five parts of this series. If you are a developer interested in the implementation of Plexus and Guice, you&#8217;ll find these posts to be a good starting point for learning about we&#8217;ve implemented this compatibility layer.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2010/01/from-plexus-to-guice-1-why-guice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

