<?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://www.sonatype.com/people/tag/maven/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>Thu, 09 Feb 2012 15:48:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Video: Multi-master configuration for Nexus</title>
		<link>http://www.sonatype.com/people/2011/07/video-multi-master-configuration-for-nexus/</link>
		<comments>http://www.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>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.sonatype.com/people/2011/07/video-multi-master-configuration-for-nexus/&via=SonatypeCM&text=Video: Multi-master configuration for Nexus&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.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://www.sonatype.com/people/2011/06/next-webinar-improving-your-java-development-with-apache-maven-3-and-hudson/</link>
		<comments>http://www.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>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.sonatype.com/people/2011/06/next-webinar-improving-your-java-development-with-apache-maven-3-and-hudson/&via=SonatypeCM&text=Next Webinar: Improving Your Java development with Apache Maven 3 and Hudson&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.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://www.sonatype.com/people/2011/04/tycho-building-eclipse-plugins-with-maven/</link>
		<comments>http://www.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>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.sonatype.com/people/2011/04/tycho-building-eclipse-plugins-with-maven/&via=SonatypeCM&text=Tycho: Building Eclipse plugins with Maven&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.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://www.sonatype.com/people/2011/04/m2eclipse-the-collaboration-of-the-maven-eclipse-platforms/</link>
		<comments>http://www.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>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.sonatype.com/people/2011/04/m2eclipse-the-collaboration-of-the-maven-eclipse-platforms/&via=SonatypeCM&text=m2eclipse: The collaboration of the Maven &amp; Eclipse Platforms&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.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://www.sonatype.com/people/2011/03/watch-the-hudson-integration-webinar-replay/</link>
		<comments>http://www.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>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.sonatype.com/people/2011/03/watch-the-hudson-integration-webinar-replay/&via=SonatypeCM&text=Watch the Hudson Integration Webinar Replay&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2011/03/watch-the-hudson-integration-webinar-replay/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EclipseCon 2011 is one week away!</title>
		<link>http://www.sonatype.com/people/2011/03/eclipsecon-2011-is-one-week-away/</link>
		<comments>http://www.sonatype.com/people/2011/03/eclipsecon-2011-is-one-week-away/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 14:00:00 +0000</pubDate>
		<dc:creator>hloney</dc:creator>
				<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[EclipseCon]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Tycho]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=7634</guid>
		<description><![CDATA[Another year of great talks and Eclipse workshops are just around the corner! EclipseCon 2011 is being held in Santa Clara, California from March 21 &#8211; 24. As a Strategic Member of the Eclipse Foundation and as a proud Gold Sponsor, Sonatype is looking forward to another year of great talks, tutorials and BOF&#8217;s at [...]]]></description>
			<content:encoded><![CDATA[<p><!--dzoneZ=none--><strong>Another year of great talks and Eclipse workshops are just around the corner! </strong></p>

<p>EclipseCon 2011 is being held in Santa Clara, California from March 21 &#8211; 24.</p>

<p>As a Strategic Member of the Eclipse Foundation and as a proud Gold Sponsor, Sonatype is looking forward to another year of great talks, tutorials and BOF&#8217;s at EclipseCon 2011. Sonatype technical leaders will host a number of sponsored talks on Tuesday, March 22 in the Cypress Room. Topics we will cover include: Next Generation Development Infrastructure, Hudson Continuous Integration, Tycho Build Conversion, Discovering p2 API&#8217;s, Maven 3 and many more.</p>

<p><strong><a href="http://www.sonatype.com/eclipsecon-2011.html" target="_blank">Check out the full lineup of presentations here</a>.</strong></p>

<p>We hope to see you there! But if you can&#8217;t make it, get all of the conference updates from <a href="http://twitter.com/SonatypeCM" target="_blank">the Sonatype team on Twitter</a> by following the hashtag #EclipseCon.</p>

<h4>Event Details:</h4>

<ul>
    <li><strong>Date</strong>: March 21-24, 2011</li>
    <li><strong>Location</strong>: Hyatt Regency Santa Clara, CA</li>
    <li><strong>Event Website</strong>: <a href="http://www.eclipsecon.org/2011/" target="_blank">http://www.eclipsecon.org/2011/</a></li>
</ul>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.sonatype.com/people/2011/03/eclipsecon-2011-is-one-week-away/&via=SonatypeCM&text=EclipseCon 2011 is one week away!&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2011/03/eclipsecon-2011-is-one-week-away/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Spend less time chasing problems with Sonatype Professional</title>
		<link>http://www.sonatype.com/people/2011/03/spend-less-time-chasing-problems-with-sonatype-professional/</link>
		<comments>http://www.sonatype.com/people/2011/03/spend-less-time-chasing-problems-with-sonatype-professional/#comments</comments>
		<pubDate>Thu, 10 Mar 2011 15:00:08 +0000</pubDate>
		<dc:creator>hloney</dc:creator>
				<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Nexus]]></category>
		<category><![CDATA[Sonatype Professional]]></category>
		<category><![CDATA[Sonatype webinar]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=7626</guid>
		<description><![CDATA[Thank you to everyone who attended Sonatype&#8217;s recent webinar, Improving Developer Productivity with Sonatype Professional. If you were unable to attend the webinar recording is now available. In a recent survey, 80% of developers, managers and architects said lack of integration between their tools was a huge efficiency drain. As teams standardize on tools like [...]]]></description>
			<content:encoded><![CDATA[<p><!--dzoneZ=none-->Thank you to everyone who attended Sonatype&#8217;s recent webinar, Improving Developer Productivity with Sonatype Professional. If you were unable to attend the webinar recording is now available.</p>

<p>In a recent  survey, 80% of developers, managers and architects said lack of integration  between their tools was a huge efficiency drain. As teams standardize on  tools like Maven, Hudson, and Nexus integration headaches can be real  productivity killers.</p>

<p><a href="http://go.sonatype.com/forms/20110308_webinardownload_improvdevprod" target="_blank"><strong>View this webinar</strong></a> to  learn how Sonatype Professional can help your team spend less time chasing problems and more time delivering code.</p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.sonatype.com/people/2011/03/spend-less-time-chasing-problems-with-sonatype-professional/&via=SonatypeCM&text=Spend less time chasing problems with Sonatype Professional&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2011/03/spend-less-time-chasing-problems-with-sonatype-professional/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configuring Plugin Goals in Maven 3</title>
		<link>http://www.sonatype.com/people/2011/03/configuring-plugin-goals-in-maven-3/</link>
		<comments>http://www.sonatype.com/people/2011/03/configuring-plugin-goals-in-maven-3/#comments</comments>
		<pubDate>Fri, 04 Mar 2011 15:01:48 +0000</pubDate>
		<dc:creator>bbentmann</dc:creator>
				<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Maven 3]]></category>
		<category><![CDATA[Maven Enforcer plugin]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=7525</guid>
		<description><![CDATA[In Maven 3.0.3, we introduced some improvements to the way plugin goals can be configured. This post summarizes these improvements and gives some examples of how Maven plugin configuration has been enhanced. We&#8217;ve focused on making improvements that will reduce the friction of plugin configuration for both plugin developers and Maven end-users. First, a general [...]]]></description>
			<content:encoded><![CDATA[<p>In Maven 3.0.3, we introduced some improvements to the way plugin goals can be configured. This post summarizes these improvements and gives some examples of how Maven plugin configuration has been enhanced.   We&#8217;ve focused on making improvements that will reduce the friction of plugin configuration for both plugin developers and Maven end-users.</p>

<p>First, a general tip for users interested in using these enhancements in POMs: use the <a rel="nofollow" href="http://maven.apache.org/enforcer/enforcer-rules/requireMavenVersion.html" target="_blank">requireMavenVersion</a> rule from the Maven Enforcer Plugin and required Maven version 3.0.3.  This will save other team members from running into strange build failures due to plugin misconfiguration if they are still using previous Maven versions.   Likewise, plugin authors that take advantage of these enhancements should properly declare the Maven prerequisite in the plugin POM.</p>

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

<h2>Generic collections</h2>

<p>The plugin configurator can now employ the generic type argument of a collection parameter to determine the type of the elements. In practice this means plugins can use collections as input parameters more freely without having to worry about the user being forced to specify the proper element type in the POM.</p>

<p>For instance, the goal parameter:</p>

<pre>/** @parameter */
java.util.List&lt;java.io.File&gt; files;</pre>

<p>can be configured like this in the new Maven version:</p>

<pre>&lt;files&gt;
  &lt;!-- Maven 3.0.3 can take care of converting this to a java.io.File instance --&gt;</pre>

<pre>  &lt;file&gt;pom.xml&lt;/file&gt;</pre>

<pre>  &lt;!-- The previously required implementation attribute is now superfluous but still works --&gt;
  &lt;file implementation="java.io.File"&gt;build.xml&lt;/file&gt;
&lt;/files&gt;</pre>

<p>Instead of having to specify the type of each element, Maven 3.0.3 will now automatically convert the first element in the previous example to an object of type &#8220;java.io.File&#8221;.</p>

<p>In absence of the <tt>implementation</tt> attribute, Maven usually looks for a class named <tt><em>&lt;goalPackage&gt;</em></tt><tt>.</tt><tt><em>&lt;xmlElement&gt;</em></tt> to determine the element type. The recognition of generics now enables plugin authors to use bean classes for collection elements that reside in a different package than the plugin goals.   In summary, collections now provide the same ease of configuration as classical arrays.</p>

<h2>Automatic conversion of arrays to collections, and vice versa</h2>

<p>Continuing in the spirit of the previous improvement, the new plugin configurator will now automatically convert a collection obtained from a parameter expression to an array if that&#8217;s the type expected by the plugin parameter. Likewise, an array would be converted to a collection if needed. The bottom line is that plugin authors targeting recent Maven versions can freely decide to use an array or a collection for a plugin parameter regardless of whether its default value actually yields a collection or array:</p>

<pre>/** @parameter default-value="${project.compileSourceRoots}" */
List&lt;String&gt; sourceRootsAsCollection;

/** @parameter default-value="${project.compileSourceRoots}" */
String[] sourceRootsAsArray;</pre>

<p>Before this change was made to the configurator plugin developers and Maven users had to be very careful about passing an array to a method that expected a List or vice versa.   While this might seem like a minor change, it is one of many that will make plugin development easier.</p>

<h2>Configuration of collection/array via system property</h2>

<p>For many plugin parameters it is occasionally convenient to specify their values from the command line via system properties. In the past, this was limited to parameters of simple types like <tt>String</tt> or <tt>Boolean</tt>. The latest Maven release finally allows plugin users to configure collections or arrays from the command line via comma-separated strings. Take for example a plugin parameter like this:</p>

<pre>/** @parameter expression="${includes}" */
String[] includes;</pre>

<p>This can be configured from the command line as follows:</p>

<pre>mvn &lt;goal&gt; -Dincludes=*Foo,Bar*</pre>

<p>Plugin authors that wish to enable CLI-based configuration of arrays/collections just need to add the <tt>expression</tt> tag to their parameter annotation. Note that if compatibility with older Maven versions is to be kept, the parameter type must not be an interface but a concrete collection class or an array to avoid another shortcoming in the old configurator.</p>

<h2>Inlined collections</h2>

<p>Many users complain that Maven POMs make heavy use of container elements for collections. Instead of just listing a series of dependency elements, you have to wrap all of your dependency elements in a dependencies element. The same is true for includes and excludes and other elements throughout the POM.  This extra redundancy often adds up to some very large POMs. In Maven 3.0.3, we&#8217;ve made a change to the plugin API that will support plugin configuration without requiring container elements for collections.  Here is an example:</p>

<pre>&lt;fileset&gt;
  &lt;directory&gt;src/demo&lt;/directory&gt;
  &lt;include&gt;Foo*&lt;/include&gt;
  &lt;include&gt;Bar*&lt;/include&gt;
  &lt;exclude&gt;*Bad&lt;/exclude&gt;
&lt;/fileset&gt;</pre>

<p>Previously, Maven would only look for a field or setter when processing the <tt>&lt;include&gt;</tt> elements. Now it also looks for an adder. So to support the above configuration, a plugin author would need to implement the configured bean like this:</p>

<pre>public class Fileset
{

    private List&lt;String&gt; includes = new ArrayList&lt;String&gt;();

    public void addInclude( String include )
    {
        includes.add( include );
    }

    ...
}</pre>

<p>The adder needs to be named <tt>add</tt><tt><em>&lt;xmlElement&gt;</em></tt><tt>()</tt> and must be public, non-static and have a single argument; it may have a return value. In case where multiple such adders with the same name exists, it is undefined which one gets actually called so be sure to avoid overloading the adder.</p>

<p>Given that merging of plugin configuration during POM inheritance or profile injection is purely based on the XML structure and not guided by information about the actual data types, users that employ this compacted configuration are well-advised to not mix it with the usual collection-style configuration format for a given plugin parameter as the merged configuration likely doesn&#8217;t produce the intended result.</p>

<h2>Bean default properties</h2>

<p>We can take the idea of inlining configuration a little further. Have a look at this example configuration:</p>

<pre>&lt;resources&gt;
  &lt;resource&gt;
    &lt;directory&gt;src/foo&lt;/directory&gt;
    &lt;filtering&gt;true&lt;/filtering&gt;
  &lt;/resource&gt;
  &lt;resource&gt;src/bar&lt;/resource&gt;
&lt;/resources&gt;</pre>

<p>Looks odd at first, doesn&#8217;t it? Obviously, the <tt>&lt;resource&gt;</tt> element describes some complex structure, but the second <tt>&lt;resource&gt;</tt> element in the example consists just of a mere string. It&#8217;s not hard to guess that<tt>&lt;resource&gt;src/bar&lt;/resource&gt;</tt> could be a shorthand form of <tt>&lt;resource&gt;&lt;directory&gt;src/bar&lt;/directory&gt;&lt;/resource&gt;</tt> by assuming the <tt>&lt;directory&gt;</tt> element is the default/primary property of a <tt>&lt;resource&gt;</tt>. With the new plugin configurator, this is actually possible now.</p>

<p>To enable the feature, a plugin author would have to add a method called <tt>set()</tt> to the bean class in question:</p>

<pre>public class Resource
{

    private File directory;

    public void set( File directory )
    {
        this.directory = directory;
    }

...
}</pre>

<p>This <tt>set()</tt> method must be public, non-static and take a single argument; it may have a return value.</p>

<p>Besides saving users a few bits of XML, this feature can also be used to configure complex beans via system properties from the command line. Let&#8217;s say we have a plugin parameter like this:</p>

<pre>/** @parameter expression="${artifact}" */
Artifact artifact;</pre>

<p>Now further assuming the <tt>Artifact</tt> bean used here implements a nice <tt>set()</tt> method that is smart enough to parse a string into artifact coordinates, one could invoke the plugin directly via:</p>

<pre>mvn &lt;goal&gt; -Dartifact=org.apache.maven:maven-core:3.0</pre>

<p>Last but not least, the default property feature also enables a smooth upgrade path in case plugin parameters need to be changed from simple values to complex structures. Going back to the initial example with the <tt>&lt;resource&gt;</tt>elements, consider the plugin author originally didn&#8217;t anticipate the <tt>&lt;filtering&gt;</tt> element and designed the plugin parameter to be of type <tt>File[]</tt>.</p>

<p>With previous Maven versions, the only way to extend the plugin to support the<tt>&lt;filtering&gt;</tt> element is to deprecate the existing <tt>&lt;resources&gt;</tt> parameter and introduce a new parameter using the complex type or alternatively just break compatibility with existing POMs that use the old plugin version. Using the default property support, a plugin can change the parameter type from <tt>File[]</tt> to <tt>Resource[]</tt> without affecting existing users.</p>

<h2>Simpler configuration of properties parameter</h2>

<p>While <tt>java.util.Properties</tt> is just a concrete implementation of a <tt>Map</tt>, the configuration required for parameters of type <tt>Properties</tt> is structurally different from the configuration format for <tt>Map</tt> parameters. For the sake of consistency and conciseness, plugin parameters of type <tt>Properties</tt> can now also be configured like a <tt>Map</tt>, that is:</p>

<pre>&lt;properties&gt;
  &lt;key1&gt;value1&lt;/key1&gt;
  &lt;key2&gt;value2&lt;/key2&gt;
&lt;/properties&gt;</pre>

<h2>User-specified implementation class for map parameters</h2>

<p>Previous Maven versions always used a <tt>TreeMap</tt> to configure parameters of type <tt>Map</tt>. In other words, neither the user nor the plugin author had any control over the map implementation being used. Just like with the collections, the updated plugin configurator recognizes an optional implementation attribute:</p>

<pre>&lt;map implementation="java.util.LinkedHashMap"&gt;
  &lt;key&gt;value&lt;/key&gt;
&lt;/map&gt;</pre>

<p>In absence of both the attribute and a concrete implementation class in the parameter declaration, <tt>TreeMap</tt> continues to get used.</p>

<h2>Hexadecimal and octal numbers</h2>

<p>In some contexts, it&#8217;s more convenient to specify a number in hexadecimal or octal notation. To support this, plugin authors previously had to declare the corresponding plugin parameters as strings and do the conversion themselves. Now, it&#8217;s natively supported, using the prefix &#8220;0x&#8221; to denote hex notation and the prefix &#8220;0&#8243; to denote octal notation.</p>

<pre>&lt;rgb&gt;0xFF00C0&lt;/rgb&gt; &lt;!-- hex number --&gt;
&lt;perms&gt;0664&lt;/perms&gt; &lt;!-- octal number --&gt;</pre>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.sonatype.com/people/2011/03/configuring-plugin-goals-in-maven-3/&via=SonatypeCM&text=Configuring Plugin Goals in Maven 3&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2011/03/configuring-plugin-goals-in-maven-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Next Generation Infrastructure with Maven, m2eclipse at EclipseCon 2011</title>
		<link>http://www.sonatype.com/people/2011/03/next-generation-infrastructure-with-maven-m2eclipse-at-eclipsecon-2011/</link>
		<comments>http://www.sonatype.com/people/2011/03/next-generation-infrastructure-with-maven-m2eclipse-at-eclipsecon-2011/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 15:00:03 +0000</pubDate>
		<dc:creator>hloney</dc:creator>
				<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[EclipseCon]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[m2eclipse]]></category>
		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=7591</guid>
		<description><![CDATA[EclipseCon 2011 is approaching quickly, but it&#8217;s not too late to make plans to head to Santa Clara, California this month! EclipseCon is the conference for anyone involved in Eclipse. As a proud member of the Eclipse Foundation, Sonatype is looking forward to another year of great talks, tutorials and BOF’s. We will be hosting [...]]]></description>
			<content:encoded><![CDATA[<p><!--dzoneZ=none-->EclipseCon 2011 is approaching quickly, but it&#8217;s not too late to make plans to head to Santa Clara, California this month!</p>

<p>EclipseCon is the conference for anyone involved in Eclipse. As a  proud member of the Eclipse Foundation, Sonatype is looking forward to  another year of great talks, tutorials and BOF’s. We will be hosting a  number of extended workshops as well as talks in the Cypress Room all day on Tuesday, March 22, 2011.</p>

<p>Sonatype founder Jason van Zyl will be giving a presentation on Next Generation Development Infrastructure with Maven, m2eclipse, Nexus &amp; Hudson.</p>

<h4>Presentation details:</h4>

<p>All development organizations eventually converge on a set of tools to  reduce costs, lower onboarding time, and leverage knowledge in strong  communities to create standard processes. To this end we see in many  organizations the emergence of a standard development stack consisting  of Maven, m2eclipse, Nexus &amp; Hudson. In this talk, Jason van Zyl,  Founder of the Apache Maven project, will discuss the future of Maven  and specifically Maven 3.x, the rapidly approaching m2eclipse 1.0  release, the recent Nexus 1.9 release and roadmap, and emerging tools  such as Maven Shell and Polyglot Maven. Sonatype itself leverages this  stack on a daily basis and this discussion will focus not only on the  tools individually, but how they can work together to create a best  practices approach to building and delivering your software in your  organization.</p>

<h4>Event details:</h4>

<ul>
    <li><strong>Date:</strong> March 21-24, 2011</li>
    <li><strong>Location:</strong> Hyatt Regency Santa Clara, CA</li>
    <li><strong>Event website:</strong> <a href="http://www.eclipsecon.org/2011/" target="_blank">http://www.eclipsecon.org/2011/</a></li>
</ul>

<p>Stay tuned to the Sonatype blog for updates on Sonatype&#8217;s talks and  presentations at EclipseCon 2011. And for the latest news and updates  from the Sonatype team, <a href="http://twitter.com/SonatypeCM" target="_blank">follow us on Twitter</a> @SonatypeCM.</p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.sonatype.com/people/2011/03/next-generation-infrastructure-with-maven-m2eclipse-at-eclipsecon-2011/&via=SonatypeCM&text=Next Generation Infrastructure with Maven, m2eclipse at EclipseCon 2011&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2011/03/next-generation-infrastructure-with-maven-m2eclipse-at-eclipsecon-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hudson Plugins, Meet Dependency Injection: JSR330 Support Now Available</title>
		<link>http://www.sonatype.com/people/2011/03/hudson-plugins-meet-dependency-injection-jsr330-support-now-available/</link>
		<comments>http://www.sonatype.com/people/2011/03/hudson-plugins-meet-dependency-injection-jsr330-support-now-available/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 15:38:01 +0000</pubDate>
		<dc:creator>Jason van Zyl</dc:creator>
				<category><![CDATA[hudson]]></category>
		<category><![CDATA[m2eclipse]]></category>
		<category><![CDATA[dependency injection]]></category>
		<category><![CDATA[jsr330]]></category>
		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=7575</guid>
		<description><![CDATA[Two weeks ago we proposed that Hudson plugin authors be able to use dependency injection through the JSR-330 standard. This change makes it easier to write Hudson plugins without having to dig into Hudson internals, it provides greater separation between plugins and Hudson core, and it makes it much easier to test plugins without having [...]]]></description>
			<content:encoded><![CDATA[<p>Two weeks ago we proposed that <a href="http://www.sonatype.com/people/2011/02/guicing-up-hudson-making-life-easier-for-developers-with-jsr-330/">Hudson plugin authors be able to use dependency injection</a> through the JSR-330 standard.   This change makes it easier to write Hudson plugins without having to dig into Hudson internals, it provides greater separation between plugins and Hudson core, and it makes it much easier to test plugins without having to bring along core Hudson objects.</p>

<p>These changes are now <a href="https://github.com/hudson/hudson/tree/master/hudson-inject">in the core of Hudson</a>. Even though JSR330 can now be used by plugin authors these changes should, in no way, affect plugin authors using the existing API.   Since this question came up on the mailing list, I&#8217;ll give a short description of how it works here.  The JSR330 integration allows you to take advantage of JSR330, if you wish, by using an alternative plugin strategy.  Our new plugin strategy interoperates with the existing, classic plugin strategy.  Sonatype&#8217;s Hudson Professional distribution actually ships with a mixture of JSR330 plugins and classic plugins and we find this works quite well. We tried to make it easier to use new strategies for wiring up plugin, and <a href="http://groups.google.com/group/jenkinsci-dev/browse_thread/thread/c284f0c1526cc1bf/96c9f06e59e86199">Stuart McCulloch has offered this strategy on the Jenkins development list</a> and it appears to have been absorbed as part of <a href="http://issues.jenkins-ci.org/browse/JENKINS-8897">JENKINS-8897</a>.
<span id="more-7575"></span>
Now that the absorbtion of our first proposal is complete we will move on to our next proposals. These proposals are a mixture of project infrastructure proposals and core Hudson proposals.</p>

<p><strong>New infrastructure for plugin developers.</strong> Winston Prakash and I have been working on setting up a new infrastructure for Hudson plugin Developers where it&#8217;s very easy for them to develop, stage to Nexus OSS, and synchronize their plugins to Maven Central. As part of this work Sonatype is also working on making Hudson plugin development dead-simple with m2eclipse.  Winston and I have started testing this new infrastructure with a few plugin developers over the last couple of days and it&#8217;s working out quite well.</p>

<p><strong>Plugins update site generation from Maven Central.</strong> Once Hudson plugin developers have synchronized their plugins to Maven Central we want them to be made immediately available to Hudson users. I have been working on a plugin for Nexus that will listen for incoming changes to Hudson plugins and dynamically modify the JSON metadata required by the Hudson update manager. The information about available Hudson plugins will be made available from Maven Central as a set of REST services. The integration possibilities here are very interesting.</p>

<p><strong>JAXRS-based REST API.</strong> Jeanfrancois Arcand has been working on adding support for the dynamic addition of resources in Jersey and adding support for a JSR330-based component provider. We want to be able to use JSR330 and we want Hudson plugins using JSR330 to be able to dynamically register their own REST resources. Once this work is done on Jersey we will be making the proposal for its inclusion to the Hudson core.</p>

<p><strong>Modularizing the Hudson core using JSR330.</strong> Stuart McCulloch has started analyzing the Hudson core and finding ways to help us reduce the complexity by breaking it apart into distinct JSR330 components. This will be an ongoing process, but one we believe will help us with all other work we intend to do with Hudson.</p>

<p><strong>Hudson Core Testing.</strong> There is simply no way that we can aggressively refactor the core and know the changes are not harmful without drastically increasing the amount of testing done. This will be another ongoing process and I believe the most important contribution we will be making.</p>

<p>We are moving more carefully and probably slower then we might like, but we feel that, in order to aggressively add features in the future, the testing infrastructure, development infrastructure, and core features need to be in place. All this work I&#8217;m talking about will likely take a release or two to get in place but once that is done we will be moving at a radically different pace.</p>
<div style="float: right; margin-left: 10px;"><a href="http://twitter.com/share?url=http://www.sonatype.com/people/2011/03/hudson-plugins-meet-dependency-injection-jsr330-support-now-available/&via=SonatypeCM&text=Hudson Plugins, Meet Dependency Injection: JSR330 Support Now Available&related=:&lang=en&count=horizontal" class="twitter-share-button">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2011/03/hudson-plugins-meet-dependency-injection-jsr330-support-now-available/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

