<?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 201</title>
	<atom:link href="http://blog.sonatype.com/people/tag/maven-201/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>Thu, 06 Jun 2013 20:52:15 +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>First day impressions of Maven 201</title>
		<link>http://blog.sonatype.com/people/2010/06/first-day-impressions-of-maven-201/</link>
		<comments>http://blog.sonatype.com/people/2010/06/first-day-impressions-of-maven-201/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 12:30:52 +0000</pubDate>
		<dc:creator>hloney</dc:creator>
				<category><![CDATA[Maven]]></category>
		<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[Matthew McCullough]]></category>
		<category><![CDATA[Maven 201]]></category>
		<category><![CDATA[Sonatype training]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=5690</guid>
		<description><![CDATA[A long time advocate of the open source community, and contributor to the Sonatype&#8217;s Maven books, Manfred Moser, recently enrolled in our Maven training courses, and has decided to document and share his experiences. First on tap is Maven 201 with Matthew McCullough. The training started well, when Matt mentioned that he thinks deleting a [...]]]></description>
				<content:encoded><![CDATA[<p><!--dzoneZ=none--><a href="http://www.sonatype.com/people/wp-content/uploads/2009/10/maven.png"><img class="alignright size-full wp-image-3145" title="maven" src="http://www.sonatype.com/people/wp-content/uploads/2009/10/maven.png" alt="" width="250" height="72" /></a>A long time advocate of the open source community, and contributor to the Sonatype&#8217;s Maven books, Manfred Moser, recently enrolled in our <a href="http://www.sonatype.com/training" target="_blank">Maven training courses</a>, and has decided to document and share his experiences.  First on tap is Maven 201 with Matthew McCullough.</p>

<blockquote>The training started well, when Matt mentioned that he thinks deleting a line of code improves the code you are working on. I totally agree and always found refactoring sessions that remove reams of code especially satisfying.</blockquote>

<p>Manfred then goes on to list his impressions of Maven 201, including the points that really stuck out for him.</p>

<blockquote>It is amazing how much you can theoretically configure the build with  profiles and then lock things down with plugin/dependency management and  the enforcer plugin – for heavy regulated environments or tight  requirements this is ideal.</blockquote>

<p>To follow Manfred&#8217;s experiences throughout his Maven training courses, <a href="http://www.simpligility.com/2010/06/impressions-from-the-first-day-of-mvn-201/" target="_blank">go to his blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2010/06/first-day-impressions-of-maven-201/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven 101: Dependency Management</title>
		<link>http://blog.sonatype.com/people/2010/05/maven-101-dependency-management/</link>
		<comments>http://blog.sonatype.com/people/2010/05/maven-101-dependency-management/#comments</comments>
		<pubDate>Thu, 13 May 2010 13:41:50 +0000</pubDate>
		<dc:creator>Matthew McCullough</dc:creator>
				<category><![CDATA[Sonatype]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Maven 101]]></category>
		<category><![CDATA[Maven 201]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=5319</guid>
		<description><![CDATA[Over the course of the last several months of teaching the Maven 101 and 201 courses with Sonatype, it has been exciting to hear some of the &#8220;aha&#8221; moments that students have had.  I&#8217;d like to discuss some of the most frequently occurring ones in a series of blog posts, starting with the most common [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.sonatype.com/people/wp-content/uploads/2009/10/maven.png"><img class="size-full wp-image-3145 alignright" title="maven" src="http://www.sonatype.com/people/wp-content/uploads/2009/10/maven.png" alt="" width="250" height="72" /></a>Over the course of the last several months of teaching the Maven 101 and 201 courses with Sonatype, it has been exciting to hear some of the &#8220;aha&#8221; moments that students have had.  I&#8217;d like to discuss some of the most frequently occurring ones in a series of blog posts, starting with the most common epiphany:</p>

<ul>
    <li>Dependency management doesn&#8217;t select the highest version</li>
</ul>

<p>A misconception that I&#8217;ve often heard is that &#8220;Maven chooses the highest version&#8221; when two or more transitive dependencies disagree on the version of a given groupId and ArtifactId coordinate.</p>

<p>It may surprise you to learn that Maven&#8217;s dependency resolution process is a rather simple one.  This simplicity is actually a benefit for the sake of debugging and manually resolving the dependencies.</p>

<p>The fact is that Maven resolves the version nearest to the top of the dependency tree.  But how can you visualize this hierarchy?  There are two approaches.</p>

<p>The first approach is via the command line and the dependency plugin.  At the prompt in a Maven project, type:</p>

<p>mvn dependency:tree</p>

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

<p><a href="http://www.sonatype.com/people/wp-content/uploads/2010/05/Maven-Dependency-Tree.png"><img class="alignnone size-full wp-image-5321" title="Maven Dependency Tree" src="http://www.sonatype.com/people/wp-content/uploads/2010/05/Maven-Dependency-Tree.png" alt="" width="794" height="460" /></a></p>

<p>You receive an ASCII art rendering of the dependencies, including transitive dependencies.  Now it is relatively easy to see what is closest to the top.</p>

<p>But an even better visualization comes from the m2eclipse plugin.  Open Eclipse and choose File-&gt;Import-&gt;Maven-&gt;Existing Maven Projects</p>

<p><a href="http://www.sonatype.com/people/wp-content/uploads/2010/05/Maven-101-blog-2nd-image.png"><img class="alignnone size-full wp-image-5324" title="Maven 101 blog 2nd image" src="http://www.sonatype.com/people/wp-content/uploads/2010/05/Maven-101-blog-2nd-image.png" alt="" width="667" height="663" /></a></p>

<p>Once the project is imported, double click on the pom.xml file and then choose the Dependency Hierarchy tab.  And you get an even richer representation of the dependency tree.  The m2eclipse plugin offers &#8220;conflicted&#8221; and &#8220;from&#8221; hints in the version descriptions of each tree node above and beyond what the more simplistic command line implementation offered.</p>

<p><a href="http://www.sonatype.com/people/wp-content/uploads/2010/05/Maven-101-blog-3rd-image.jpg"><img class="alignnone size-full wp-image-5326" title="Maven 101 blog 3rd image" src="http://www.sonatype.com/people/wp-content/uploads/2010/05/Maven-101-blog-3rd-image.jpg" alt="" width="737" height="531" /></a></p>

<p>Now that you&#8217;ve visualized what version will be automatically selected (nearest to the top of the tree) by the resolution process, we can discuss in the next blog post what the best approaches and anti-patterns are for controlling third party library versions with just a few simple tags.</p>

<p>In the upcoming posts, we&#8217;ll discuss more Maven revelations such as:</p>

<ul>
    <li>Integration tests have their own lifecycle</li>
    <li>Parent references do not have to be symmetrical with module references</li>
    <li>Dependency management is a better option than exclusions to control versions of transitive dependencies</li>
</ul>

<p>These topics often turn into complete discussions given the dynamic nature and flexibility of our Maven course offerings.  If you&#8217;d like training from &#8220;The Maven Company&#8221; to get best practices, proper techniques, and time saving approaches to working with Maven, <a href="http://www.sonatype.com/training" target="_blank">take a look at our Maven 101 and 201 public offerings in an instructor-led web training format.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.sonatype.com/people/2010/05/maven-101-dependency-management/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
