<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Sonatype Blog</title>
	
	<link>http://www.sonatype.com/people</link>
	<description>State-of-the-Art Build Production for the Modern Software Enterprise</description>
	<pubDate>Fri, 06 Nov 2009 21:37:58 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<geo:lat>37.380207</geo:lat><geo:long>-122.087871</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/sonatype" type="application/rss+xml" /><feedburner:emailServiceId>sonatype</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Register for webinar “LDAP integration in Nexus Professional”</title>
		<link>http://feedproxy.google.com/~r/sonatype/~3/mWmYAp5uPxg/</link>
		<comments>http://www.sonatype.com/people/2009/11/register-for-webinar-ldap-integration-in-nexus-professional/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 21:37:58 +0000</pubDate>
		<dc:creator>Alex Maier</dc:creator>
		
		<category><![CDATA[Sonatype]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=3309</guid>
		<description><![CDATA[Register for the fourth monthly webinar, &#8220;LDAP integration in Nexus Professional: Technology roadmap&#8221; with Brian Demers.

Date: 02 DEC 2009
Time: 10am Pacific Time
Title:  LDAP integration in Nexus Professional: Technology roadmap
Speaker: Brian Demers, Software Developer, Sonatype

Summary: Nexus Professional adds a Lightweight Directory Access Protocol (LDAP) Authentication realm which provides Nexus with the capability to authenticate users [...]]]></description>
			<content:encoded><![CDATA[<p>Register for the fourth monthly webinar, &#8220;LDAP integration in Nexus Professional: Technology roadmap&#8221; with Brian Demers.</p>

<p><strong>Date: 02 DEC 2009<br />
Time: 10am Pacific Time<br />
Title:  LDAP integration in Nexus Professional: Technology roadmap<br />
Speaker: Brian Demers, Software Developer, Sonatype</strong></p>

<p><strong>Summary: </strong>Nexus Professional adds a Lightweight Directory Access Protocol (LDAP) Authentication realm which provides Nexus with the capability to authenticate users against an LDAP server. In addition to handling authentication, Nexus can be configured to map Nexus roles to LDAP groups. This webinar covers the existing LDAP support in Nexus Professional and includes a technology roadmap for the future development.</p>

<p><a href="http://sonatype.com/products/nexus/features">Learn more about Nexus Professional</a>.</p>

<p>The webinar is free to attend, but a registration is required. <a href="http://sonatype.com/webinars/register2009-12-02">Register now</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sonatype?a=mWmYAp5uPxg:NRmJmGVjFxc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sonatype?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=mWmYAp5uPxg:NRmJmGVjFxc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sonatype?i=mWmYAp5uPxg:NRmJmGVjFxc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=mWmYAp5uPxg:NRmJmGVjFxc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sonatype?i=mWmYAp5uPxg:NRmJmGVjFxc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=mWmYAp5uPxg:NRmJmGVjFxc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sonatype?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=mWmYAp5uPxg:NRmJmGVjFxc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sonatype?i=mWmYAp5uPxg:NRmJmGVjFxc:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sonatype/~4/mWmYAp5uPxg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2009/11/register-for-webinar-ldap-integration-in-nexus-professional/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sonatype.com/people/2009/11/register-for-webinar-ldap-integration-in-nexus-professional/</feedburner:origLink></item>
		<item>
		<title>Maven 3.x: Paving the desire lines —  Part One</title>
		<link>http://feedproxy.google.com/~r/sonatype/~3/EyU7uvwCntc/</link>
		<comments>http://www.sonatype.com/people/2009/11/maven-3x-paving-the-desire-lines-part-one-2/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 08:32:29 +0000</pubDate>
		<dc:creator>jason</dc:creator>
		
		<category><![CDATA[Community]]></category>

		<category><![CDATA[How-To]]></category>

		<category><![CDATA[Maven]]></category>

		<category><![CDATA[Mercury]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[Sonatype]]></category>

		<category><![CDATA[m2eclipse]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=3292</guid>
		<description><![CDATA[

Maven 3.0

With Maven 3.x we have made our best attempt to listen to users, find out what they need and want, and make reasonable preparations and plans to fix the problems, implement useful features, and create the integration points for working properly with third-party systems like Nexus and Hudson. While there have been many new [...]]]></description>
			<content:encoded><![CDATA[<!-- Generated by Markdown to HTML in MarsEdit -->

<h1>Maven 3.0</h1>

<p>With Maven 3.x we have made our best attempt to listen to users, find out what they need and want, and make reasonable preparations and plans to fix the problems, implement useful features, and create the integration points for working properly with third-party systems like Nexus and Hudson. While there have been many new feature requests &#8212; and we have many new features done or in the works &#8212; the number one concern is backward compatibility. Maven 3.x makes an ardent attempt to be 100% backward-compatible with Maven 2.x. All your Maven 2.x builds should work out of the box using 3.x without change to your projects. We simply can&#8217;t cause pain to the existing user base. We are very cognizant that even small changes can have a huge impact and so we have tried achieve complete Maven 2.x fidelity with Maven 3.x.</p>

<p>In Maven 3.x we have reduced the number of modules, we have simplified and extracted the artifact resolution system, we have put a performance framework in place, and we have created an enormous set of integration tests for Maven&#8217;s core and for many of the core plugins. We are constantly trying to validate core features and core plugins are working properly. We hope with the simplifications that we have made that more people will get involved in the project. We have done some heavy overhauling of many of the internals to make way for future features and I believe Maven 3.x is really the only path forward for Maven. What&#8217;s the technique we used to decide on how to plan and work toward the completion of Maven 3.x? A very practical approach to determining an optimal path called desire lines.</p>

<h2>Desire Lines</h2>

<p>A desire line usually represents the shortest or most easily navigated route between an origin and destination. The width and amount of erosion of the line represents the amount of demand. The term was coined by Gaston Bachelard in his book The Poetics of Space. Desire lines can usually be found as shortcuts where constructed pathways take a circuitous route. A concrete example: the pathways around the Berkeley campus in California. During the early years of Berkeley no pathways were paved. Instead they let inhabitants walk in optimal paths between the buildings and location over a period time to form clear pathways over the grass. Once these pathways had been established they could be paved to make the pathway more permanent. This is very similar to what happened with Maven 2.x. Consider Maven 2.x the pathways marked in the grass. Consider Maven 3.x taking all that learning from Maven 2.x and adopting the optimal form of use and codifying those forms of use i.e. paving the desire lines.</p>

<p>Over the course of hundreds of thousands of people using Maven we have a very good idea of what these optimal pathways look like now. Here are a few examples of some of the things we&#8217;ve seen and the things we have to do in order to make these lasting improvements.</p>

<h2>Responding to invitations for improvement</h2>

<p><img src="http://www.sonatype.com/people/wp-content/uploads/2009/11/desireline11.png" alt="DesireLine1.png" border="0" width="666" height="500" /></p>

<p>There are many things in Maven 2.x that work reasonably well but have some minor flaws which cause irritation:</p>

<ul><li>Dependency management. How to effectively manage what we will call a target platform (intentionally using the Eclipse nomenclature). It is easy to manage the versions of an applications runtime or its target platform. But what happens when you start pulling in multiple, separately developed target platforms.</li><li>Version specifications and version ranges. Maven&#8217;s notion of this is workable, but when it comes to the version specification and ranges it&#8217;s time to just defer to OSGi in this regard. What OSGi specifies and what Maven specifies are not wildly different but different enough to cause some problems. We&#8217;ll be working on aligning Maven to the version specification of OSGi.</li><li>The way plugins interact with embedded environments was just wrong. We allowed for no support for incremental changes. The result is that in M2Eclipse when you change an individual resource, that individual resource can be processed efficiently and not fire up all of Maven to run the whole build lifecycle. Sorry, but you won&#8217;t have time to get a coffee anymore.</li><li>There are slew more, but we&#8217;ll save those for other blog entries.</li></ul>

<h2>Responding to &#8230; being completely wrong</h2>

<p><img src="http://www.sonatype.com/people/wp-content/uploads/2009/11/desireline2.jpg" alt="DesireLine2.jpg" border="0" width="375" height="500" /></p>

<p>There are some things in Maven 2.x we just didn&#8217;t get right and we have to make reparations:</p>

<ul><li>Composition versus inheritance in the POM. There are some great debugged toolchains like we have in the Apache Organization POM for releasing, but this toolchain is not easily consumable by outside projects because it makes no sense to inherit from the Apache Organization POM for your projects. So how can we make these chunks of debugged combinations of plugins and their associated configuration? We will introduce mixins to help with this. Essentially it will be a POM consisting of plugins and configurations that can be externally parameterized. These mixins will be deployed to a repository and be referenced with a standard coordinate. Basically it will be an intelligent import with validation which will allow composition in your POMs.</li><li>Checking out the whole source tree versus an individual module and parent element versioning. We have always intentionally made projects specify versions in the parent elements. When you check out individual modules this is necessary. But for projects where the whole source tree is checked out, the version of the parent can be inferred and the requirement for specifying the version element in the parent can be removed.</li><li>Clean separation of operations that need to happen at the beginning and end of the lifecycle versus in the lifecycle itself. To make the OSGi integration we created work we needed to get at the projects before the build lifecycle was executed so we added a clear hook before lifecycle execution. What we have done to make OSGi integration work in Maven 3.x is simply not possible in Maven 2.x. We also had a terrible problem with reporting and aggregation because there was no clear point at which the lifecycle was over. Now once the build lifecycle is complete there is a clear hook to get the projects in the reactor so they can be processed easily. Accurate aggregation is now possible.</p></li><li>Again, there are slew more, but we&#8217;ll also save those for other blog entries.</li></ul>

<h2>Responding to under-utilization of what exists</h2>

<p>Unfortunately there are still a lot of powerful features and plugins in Maven that a lot of people don&#8217;t know about. We have tried to remedy this situation with the four books that we constantly update stream, and a stream of blog posts, and the soon to be enterprise Maven users list which will focus on the holistic and systematic use of Maven, M2Eclipse, Nexus and Hudson. We need to do a better job explaining end-to-end best practices for developing, testing, and provisioning software. We also need to do a better job describing some of the incredibly useful plugins we have like the enforcer plugin and the dependency plugin.</p>

<p>But again, our best attempt to show people what is available through the four books that we have:</p>

<ul><li><a href="http://www.sonatype.com/documentation/books/maven-defguide">Maven: The Definitive Guide</a></li><li><a href="http://books.sonatype.com/nexus-book/">Repository Management with Nexus</a></li><li><a href="http://books.sonatype.com/m2eclipse-book/reference">Developing with Eclipse and Maven</a></li><li><a href="http://books.sonatype.com/mhandbook/reference">The Maven Handbook</a></li></ul>

<p>Here is a picture I always use to illustrate the point that even though something may be sitting directly in front of you, it&#8217;s not always immediately obvious unless someone points it out to you. This is very much the case where we see users asking us for help with particular use cases and in frequently it&#8217;s very easy to answer the question by pointing to a URL. My example is the Fedex logo which was designed to have an arrow being formed between the last two letters of the logo. Quite ingenious but most people I point this out to haven&#8217;t notice it. </p>

<p><img src="http://www.sonatype.com/people/wp-content/uploads/2009/11/fedex11.png" alt="Fedex1.png" border="0" width="588" height="175" /></p>

<p><img src="http://www.sonatype.com/people/wp-content/uploads/2009/11/fedex21.png" alt="Fedex2.png" border="0" width="588" height="175" /></p>

<p>We are going to try a lot harder to make sure the value that exists is easier to find. I don&#8217;t enjoy reading blog posts from unhappy users at all, but I especially don&#8217;t like it when I know there is a solution which has been documented somewhere. Those painful situations can be reduced if not eliminated completely.</p>

<h2>Backward Compatibility</h2>

<p>I can&#8217;t stress enough how important backward compatibility is to us. We have done a non-trivial amount of work to pave the way for new capabilities in Maven 3.x while preserving 100% backward compatibility for:</p>

<ul><li>Maven itself and the behaviour that users expect from the CLI</li><li>Artifact Resolution API</li><li>Plugin API</li><li>Plugin configuration</li><li>Site generation (even though we&#8217;ve extracted site/reporting entirely into the maven-site-plugin)</li></ul>

<p>We must ensure that plugins and reports written against the Maven 2.0.x APIs remain viable in 3.0. We don&#8217;t want people rewriting their plugins or having to change their projects at all or it will simply be chaos. We simply have too many users and requiring changes will have an enormous human cost so we&#8217;ve been slow in announcing Maven 3.x. The version of Maven 3.x you can pull from the Sonatype grid is probably the best version of Maven that has existed but we are still being careful about releasing it. If you want to try it you can find it <a href="https://grid.sonatype.org/ci/view/Maven%203.0.x/job/maven-3.0.x-bootstrap/">here</a>.</p>

<p>We must also ensure that POMs of version 4.0.0 are supported in 3.x along with the behavior currently experienced. We will need to make changes to the POM in order to introduce many of the new features so we&#8217;ve made the requisite preparation. We are relying heavily on our integrations tests right now but as we move forward the work that Benjamin is doing on the project/model-builder will help us to accommodate different versions of a POM, and different formats we decide to support.  The model-builder code has no limitation with respect to formats. We can support XML, or any source that anyone can dream up. These implementations may find use outside of Maven. For example someone might build something with the Maven, JRuby, and Mercury to create a JRuby-based system. The same could be done for Groovy. We already have some examples of this with the Polyglot Maven project we&#8217;ve started which will be the topic of a subsequent post.</p>

<p>We have managed to keep almost everything backward compatible and we will go so far as to provide an isolated execution environment that can contain older versions of the plugin API so that everything from the past can continue to work in Maven 3.x. We will not truly be able to do this until we change the internal Maven runtime over to OSGi but we know what needs to be done. </p>

<h2>Integration Testing</h2>

<p>An enormous amount of time and energy has gone into improving the the integration tests for Maven. The integration tests are the gatekeeper and let us determine that we have a Maven 3.x that is compatible for Maven 2.x. We now have 506 integration tests that will help protect us as we move forward. We will likely approach 600 integration tests by the time we reach the Maven 3.0 GA.</p>

<p>All core Maven plugins now have ITs and we have started branching out into the Mojo project to create plugin ITs there as well. We have a good pattern so we are encouraging anyone writing a Maven plugin to create ITs so that we can help ensure we don’t break people in the future. We have really taken fixing the problems we see seriously. I couldn&#8217;t help but make a little spoof of the SNL skit and adapting it for the Maven perspective.</p>

<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/kaT-jFpwj_M&amp;hl=en&amp;fs=1&amp;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/kaT-jFpwj_M&amp;hl=en&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>

<p>In the next post I will start talking about some of the technical changes we have made to Maven 3.x in order to achieve our goals. Those will include:</p>

<ul><li>Refactored model/project builder (the support Polyglot Maven uses)</li><li>Queryable lifecycle</li><li>Lifecycle Extension points</li><li>Error and integrity reporting</li><li>Mercury: Jetty Client &amp; SAT4J</li><li>Embedding</li><li>Incremental build support (used heavily in M2Eclipse for performance improvements, these are changes to the plugin API)</li></ul>

<p>I plan to try and write something about Maven 3.x frequently in preparation for the Maven 3.x talks in <a href="http://www.javaforum.se/jf/index.jsp?meeting=53">Stockholm</a>, <a href="http://rheinjug.de/knowledge/vortr-mainmenu-28/108-maven-3-mit-jason-van-zyl">Dusseldorf</a>, <a href="http://87.230.78.21:8080/display/jugc/2009.11.16+Maven+3">Cologne</a>, and <a href="http://oredev.org/maven">Devoxx</a>.</p>

<p>Stay tuned!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sonatype?a=EyU7uvwCntc:FQ5jy84vg0Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sonatype?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=EyU7uvwCntc:FQ5jy84vg0Y:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sonatype?i=EyU7uvwCntc:FQ5jy84vg0Y:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=EyU7uvwCntc:FQ5jy84vg0Y:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sonatype?i=EyU7uvwCntc:FQ5jy84vg0Y:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=EyU7uvwCntc:FQ5jy84vg0Y:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sonatype?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=EyU7uvwCntc:FQ5jy84vg0Y:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sonatype?i=EyU7uvwCntc:FQ5jy84vg0Y:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sonatype/~4/EyU7uvwCntc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2009/11/maven-3x-paving-the-desire-lines-part-one-2/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sonatype.com/people/2009/11/maven-3x-paving-the-desire-lines-part-one-2/</feedburner:origLink></item>
		<item>
		<title>In other news</title>
		<link>http://feedproxy.google.com/~r/sonatype/~3/tOMJ2iI5uPs/</link>
		<comments>http://www.sonatype.com/people/2009/11/in-other-news/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 21:05:09 +0000</pubDate>
		<dc:creator>Alex Maier</dc:creator>
		
		<category><![CDATA[Sonatype]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=3279</guid>
		<description><![CDATA[Welcome to the weekly roundup of blog posts that mention Nexus, Maven, and other projects that Sonatype developers contribute to.

Trapo blog: Maven + Hibernate + Spring + HSQLDB = your tests running fast and out-of-the-box
&#8220;I want to keep trapo environment as simple as possible. I want that people just fire a command and all tests [...]]]></description>
			<content:encoded><![CDATA[<p><em>Welcome to the weekly roundup of blog posts that mention Nexus, Maven, and other projects that Sonatype developers contribute to.</em></p>

<p><span class="nobr"><a rel="nofollow" href="http://trapo.posterous.com/maven-hibernate-spring-hsqldb-your-tests-runn">Trapo blog: Maven + Hibernate + Spring + HSQLDB = your tests running fast and out-of-the-box</a></span>
&#8220;I want to keep trapo environment as simple as possible. I want that people just fire a command and all tests can run immediately: not setups, no database creating, no sql to run. Just one single command and trapo should do everything for you. Because of that, I start to isolate the test environment from the production one so that I can then use a different database instance (or even database vendor). To integrate the combo, I just call HSQLDB to the party.&#8221;
<span style="color: #888888;">By Trapo, on 02 November 2009</span></p>

<p><span class="nobr"><a rel="nofollow" href="http://ahoehma.wordpress.com/2009/11/02/toogle-jrebel-with-a-cygwin-bash-function-and-maven/">Andreas Höhmann&#8217;s Weblog: Toogle jrebel with a cygwin bash function and maven</a></span>
&#8220;I’m using java rebel for web development with maven. Sometimes I would run jetty with jrebel sometimes without. For that I’m using two simple bash functions:&#8230;&#8221;<span style="color: #888888;">
By Andreas Höhmann, on 02 November 2009</span></p>

<p><span id="more-3279"></span><span class="nobr"><a rel="nofollow" href="http://www.wakaleo.com/blog/237-more-groovy-magic-with-maven-pom-files">Wakaleo Consulting: More Groovy Magic with Maven pom files</a></span>
&#8220;Last time, I introduced some of the new Groovy support available in Maven 3, and looked at how you will be able to write your pom files in Groovy, or in other non-XML notations. In this article, we&#8217;ll take a further look at what you can do with a Maven pom file written in Groovy.&#8221;
<span style="color: #888888;"> 30 October 2009</span></p>

<p><span class="nobr"><a rel="nofollow" href="http://blogs.atlassian.com/developer/2009/10/automated_performance_testing_using_jmeter_and_maven.html">Atlassian Blog: Automated performance testing using JMeter and Maven</a></span>
&#8220;When I think of Agile, I tend to think of the awesomeness it can bring me as a performance engineer. I see short cycles where the code is usually always stable and features are delivered incrementally. I get to watch the performance of the system evolve over time. Unfortunately, this means I&#8217;m testing software all the time. Thats fine though - none of this is by hand - this kind of repetitive task is perfect for automation.&#8221;
<span style="color: #888888;"> By George Barnett, on October 20, 2009</span></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sonatype?a=tOMJ2iI5uPs:Ka2cjvc1cAo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sonatype?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=tOMJ2iI5uPs:Ka2cjvc1cAo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sonatype?i=tOMJ2iI5uPs:Ka2cjvc1cAo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=tOMJ2iI5uPs:Ka2cjvc1cAo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sonatype?i=tOMJ2iI5uPs:Ka2cjvc1cAo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=tOMJ2iI5uPs:Ka2cjvc1cAo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sonatype?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=tOMJ2iI5uPs:Ka2cjvc1cAo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sonatype?i=tOMJ2iI5uPs:Ka2cjvc1cAo:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sonatype/~4/tOMJ2iI5uPs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2009/11/in-other-news/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sonatype.com/people/2009/11/in-other-news/</feedburner:origLink></item>
		<item>
		<title>Nexus Book Update: Now Available from Lulu</title>
		<link>http://feedproxy.google.com/~r/sonatype/~3/UkMaYxoygJQ/</link>
		<comments>http://www.sonatype.com/people/2009/11/nexus-book-update-now-available-from-lulu/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 15:13:40 +0000</pubDate>
		<dc:creator>tim</dc:creator>
		
		<category><![CDATA[Book]]></category>

		<category><![CDATA[Nexus]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=3268</guid>
		<description><![CDATA[For those of you interested in a printed copy of our Nexus documentation, you can now purchase a copy of &#8220;Repository Management with Nexus&#8221; from Lulu for $18.46.   Lulu is an on-demand printing service so orders will take around 3-5 days to complete.  We&#8217;ve decided to start distributing the book at the [...]]]></description>
			<content:encoded><![CDATA[<p>For those of you interested in a printed copy of our Nexus documentation, you can now <a href="http://www.lulu.com/product/paperback/repository-management-with-nexus/5943073">purchase a copy of &#8220;Repository Management with Nexus&#8221; from Lulu for $18.46</a>.   Lulu is an on-demand printing service so orders will take around 3-5 days to complete.  We&#8217;ve decided to start distributing the book at the lowest price possible to make sure that anyone can get their hands on a copy.  Let us know if having a printed version is important to you, and also contact us if you have any requests or comments about the printed product.</p>

<p><img class="aligncenter" title="The Nexus Book" src="http://www.sonatype.com/system/files/images/nexus-book-cover.png" alt="" width="272" height="350" /></p>

<p><b>Read on for a list of changes in the latest Nexus Book release.</b></p>

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

<div class="section" lang="en">
   <div class="titlepage">
      <div>
         <div>
<h3 class="title"><a name="d0e248"></a>1.1.&nbsp;Changes in Edition 1.7.1
</h3>
         </div>
      </div>
   </div>

   The following changes were introduced in Edition 1.7.1 on November
2, 2009:
   
   <div class="itemizedlist">
      <ul type="disc">
         <li>
Updated version of Nexus and Nexus Pro to 1.4.0
         </li>
      </ul>
   </div>

</div>

<div class="section" lang="en">
   <div class="titlepage">
      <div>
         <div>
<h3 class="title"><a name="d0e257"></a>1.2.&nbsp;Changes in Edition 1.7
</h3>
         </div>
      </div>

   </div>
   The following changes were introduced in Edition 1.7 on September
28, 2009:
   
   <div class="itemizedlist">
      <ul type="disc">
         <li>
Updated Information about Roles and Privileges. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-290" target="_top">NXBOOK-290</a>)

<div class="itemizedlist">

   <ul type="circle">
      <li>
         Updated <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-configuring-privileges" title="Figure&nbsp;.&nbsp;Managing Security Privileges">Figure&nbsp;, &#8220;Managing Security Privileges&#8221;</a>
      </li>
      <li>
         Updated <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-configuring-new-privilege" title="Figure&nbsp;.&nbsp;Managing Security Privileges">Figure&nbsp;, &#8220;Managing Security Privileges&#8221;</a>

      </li>
      <li>
         Updated <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-configuring-new-privileges" title="Figure&nbsp;5.23.&nbsp;Create, Delete, Read, and Update Privileges Created">Figure&nbsp;5.23, &#8220;Create, Delete, Read, and Update Privileges Created&#8221;</a>
      </li>
      <li>
         Updated <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-configuring-security-roles" title="Figure&nbsp;5.26.&nbsp;Managing Security Roles">Figure&nbsp;5.26, &#8220;Managing Security Roles&#8221;</a>

      </li>
      <li>
         Updated <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-configuring-creating-new-role" title="Figure&nbsp;.&nbsp;Managing Security Roles">Figure&nbsp;, &#8220;Managing Security Roles&#8221;</a>
      </li>
      <li>
         Updated <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-configuring-builtin-role" title="Figure&nbsp;.&nbsp;Managing Security Roles">Figure&nbsp;, &#8220;Managing Security Roles&#8221;</a>

      </li>
      <li>
         Updated <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-configuring-role-tree" title="Figure&nbsp;5.29.&nbsp;Managing Security Roles">Figure&nbsp;5.29, &#8220;Managing Security Roles&#8221;</a>
      </li>
      <li>
         Added <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-configuring-security-user" title="Figure&nbsp;5.30.&nbsp;Managing Users">Figure&nbsp;5.30, &#8220;Managing Users&#8221;</a>

      </li>
      <li>
         Added <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-configuring-security-user-role-tree" title="Figure&nbsp;5.31.&nbsp;Nexus User Role Tree">Figure&nbsp;5.31, &#8220;Nexus User Role Tree&#8221;</a>
      </li>
      <li>
         Added <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-configuring-security-user-priv-trace" title="Figure&nbsp;5.32.&nbsp;Nexus User Privilege Trace">Figure&nbsp;5.32, &#8220;Nexus User Privilege Trace&#8221;</a>

      </li>
      <li>
         Updated <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#config-sect-managing-users" title="5.1.6.4.&nbsp;Managing Users">Section&nbsp;5.1.6.4, &#8220;Managing Users&#8221;</a>
      </li>
      <li>
         Updated <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#config-sect-managing-roles" title="5.1.6.3.&nbsp;Managing Security Roles">Section&nbsp;5.1.6.3, &#8220;Managing Security Roles&#8221;</a>

      </li>
      <li>
         Updated <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#config-sect-managing-privileges" title="5.1.6.1.&nbsp;Managing Privileges">Section&nbsp;5.1.6.1, &#8220;Managing Privileges&#8221;</a>
      </li>
   </ul>
</div>
         </li>

         <li>
Updated repository configuration section
<div class="itemizedlist">
   <ul type="circle">
      <li>
         Udpated <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-repo-config" title="Figure&nbsp;5.9.&nbsp;Repository Configuration Screen for a Proxy Repository">Figure&nbsp;5.9, &#8220;Repository Configuration Screen for a Proxy Repository&#8221;</a>

      </li>
      <li>
         Updated <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-repo-config-2" title="Figure&nbsp;5.10.&nbsp;Repository Configuration Screen for a Proxy Repository">Figure&nbsp;5.10, &#8220;Repository Configuration Screen for a Proxy Repository&#8221;</a>
      </li>
      <li>
         Added information about the Publish URL setting to <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#config-sect-manage-repo" title="5.1.2.&nbsp;Managing Repositories">Section&nbsp;5.1.2, &#8220;Managing Repositories&#8221;</a>. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-291" target="_top">NXBOOK-291</a>)
         

      </li>
      <li>
         Added <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-repo-config-hosted" title="Figure&nbsp;5.11.&nbsp;Proxy Configuration Access Settings for a Hosted Repository">Figure&nbsp;5.11, &#8220;Proxy Configuration Access Settings for a Hosted
           Repository&#8221;</a>
      </li>
      <li>
         Added information about &#8220;Deployment Policy&#8221; to <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#config-sect-manage-repo" title="5.1.2.&nbsp;Managing Repositories">Section&nbsp;5.1.2, &#8220;Managing Repositories&#8221;</a>. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-292" target="_top">NXBOOK-292</a>)
         

      </li>
      <li>
         Updated the SMTP settings screenshot to include the Test
  Settings button. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-326" target="_top">NXBOOK-326</a>)
         
      </li>
   </ul>
</div>
         </li>

         <li>
Added a section about the automated error reporting feature
 (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-294" target="_top">NXBOOK-294</a>)

<div class="itemizedlist">
   <ul type="circle">
      <li>
         Added <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-configuring-automated-error" title="Figure&nbsp;5.5.&nbsp;Configuring the Automated Error Reporting">Figure&nbsp;5.5, &#8220;Configuring the Automated Error Reporting&#8221;</a>

      </li>
      <li>
         Added <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-configuring-sonatype-jira" title="Figure&nbsp;5.6.&nbsp;The Sonatype Issue Tracker">Figure&nbsp;5.6, &#8220;The Sonatype Issue Tracker&#8221;</a>
      </li>
      <li>
         Added <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-configuring-sonatype-jira-signup" title="Figure&nbsp;5.7.&nbsp;Signing Up for a Sonatype Issue Tracker Account">Figure&nbsp;5.7, &#8220;Signing Up for a Sonatype Issue Tracker Account&#8221;</a>

      </li>
      <li>
         Added documentation of feature to <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#configuring-sect-automated-error" title="5.1.1.1.&nbsp;Configuring Automated Error Reporting Settings">Section&nbsp;5.1.1.1, &#8220;Configuring Automated Error Reporting Settings&#8221;</a>
      </li>
   </ul>
</div>
         </li>

         <li>
Added a section about the Repository Summary Panel (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-297" target="_top">NXBOOK-297</a>)

<div class="itemizedlist">
   <ul type="circle">
      <li>
         Added <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-configuring-summary-hosted" title="Figure&nbsp;5.14.&nbsp;Repository Summary Panel for a Hosted Repository">Figure&nbsp;5.14, &#8220;Repository Summary Panel for a Hosted Repository&#8221;</a>

      </li>
      <li>
         Added <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-configuring-summary-proxy" title="Figure&nbsp;5.15.&nbsp;Repository Summary Panel for a Proxy Repository">Figure&nbsp;5.15, &#8220;Repository Summary Panel for a Proxy Repository&#8221;</a>
      </li>
      <li>
         Added <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-configuring-summary-virtual" title="Figure&nbsp;5.16.&nbsp;Repository Summary Panel for a Virtual Repository">Figure&nbsp;5.16, &#8220;Repository Summary Panel for a Virtual Repository&#8221;</a>

      </li>
      <li>
         Added documentation of feature to <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#config-sect-repository-summary" title="5.1.2.3.&nbsp;Viewing Repository Summary Panel">Section&nbsp;5.1.2.3, &#8220;Viewing Repository Summary Panel&#8221;</a>
      </li>
   </ul>
</div>
         </li>

         <li>
Added a section about Staging Rulesets (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-303" target="_top">NXBOOK-303</a>)

<div class="itemizedlist">
   <ul type="circle">
      <li>
         Added <a href="http://www.sonatype.com/books/nexus-book/reference/ch09s06.html#fig-staging-rulesets" title="Figure&nbsp;9.8.&nbsp;Creating a Staging Ruleset">Figure&nbsp;9.8, &#8220;Creating a Staging Ruleset&#8221;</a>

      </li>
      <li>
         Added documentation of feature to <a href="http://www.sonatype.com/books/nexus-book/reference/ch09s06.html#staging-sect-rulesets" title="9.6.1.&nbsp;Managing Staging Rulesets">Section&nbsp;9.6.1, &#8220;Managing Staging Rulesets&#8221;</a>
      </li>
      <li>
         Updated <a href="http://www.sonatype.com/books/nexus-book/reference/staging-sect-config.html#staging-sect-config-profile" title="9.3.3.&nbsp;Configuring Staging Profiles">Section&nbsp;9.3.3, &#8220;Configuring Staging Profiles&#8221;</a> to
  include information about associating Rulesets with Staging
  Profiles
         

      </li>
      <li>
         Added <a href="http://www.sonatype.com/books/nexus-book/reference/ch09s06.html#fig-staging-associate-ruleset" title="Figure&nbsp;.&nbsp;Associating a Staging Ruleset with a Staging Profile">Figure&nbsp;, &#8220;Associating a Staging Ruleset with a Staging Profile&#8221;</a>
      </li>
      <li>
         Added instructions for associating rulesets to profiles in
  <a href="http://www.sonatype.com/books/nexus-book/reference/ch09s06.html#staging-sect-defining-rulesets" title="9.6.2.&nbsp;Defining Rulesets for Promotion">Section&nbsp;9.6.2, &#8220;Defining Rulesets for Promotion&#8221;</a>

      </li>
   </ul>
</div>
         </li>
         <li>
Added information about browsing a repository index
<div class="itemizedlist">
   <ul type="circle">

      <li>
         Updated text in <a href="http://www.sonatype.com/books/nexus-book/reference/using-sect-browsing.html" title="4.2.&nbsp;Browsing Repositories">Section&nbsp;4.2, &#8220;Browsing Repositories&#8221;</a>
      </li>
      <li>
         Added <a href="http://www.sonatype.com/books/nexus-book/reference/using-sect-browsing.html#fig-nexus-browse-repo-index" title="Figure&nbsp;4.3.&nbsp;Browsing a Nexus Repository Index">Figure&nbsp;4.3, &#8220;Browsing a Nexus Repository Index&#8221;</a>

      </li>
      <li>
         Updated <a href="http://www.sonatype.com/books/nexus-book/reference/using-sect-browsing.html#fig-nexus-browse-repo" title="Figure&nbsp;4.2.&nbsp;Browsing a Nexus Repository">Figure&nbsp;4.2, &#8220;Browsing a Nexus Repository&#8221;</a>
      </li>
      <li>
         Updated text in <a href="http://www.sonatype.com/books/nexus-book/reference/using-sect-browsing-groups.html" title="4.3.&nbsp;Browsing Groups">Section&nbsp;4.3, &#8220;Browsing Groups&#8221;</a>

      </li>
      <li>
         Added <a href="http://www.sonatype.com/books/nexus-book/reference/using-sect-browsing-groups.html#fig-nexus-browse-group-index" title="Figure&nbsp;4.5.&nbsp;Browsing a Nexus Group Index">Figure&nbsp;4.5, &#8220;Browsing a Nexus Group Index&#8221;</a>
      </li>
      <li>
         Updated <a href="http://www.sonatype.com/books/nexus-book/reference/using-sect-browsing-groups.html#fig-nexus-browse-group" title="Figure&nbsp;4.4.&nbsp;Browsing a Nexus Group">Figure&nbsp;4.4, &#8220;Browsing a Nexus Group&#8221;</a>

      </li>
   </ul>
</div>
         </li>
         <li>
Document new version notification settings (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-325" target="_top">NXBOOK-325</a>)

<div class="itemizedlist">

   <ul type="circle">
      <li>
         Added <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-configuring-new-version" title="Figure&nbsp;5.8.&nbsp;New Version Notification Settings">Figure&nbsp;5.8, &#8220;New Version Notification Settings&#8221;</a>
      </li>
      <li>
         Added documentation for feature to <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#config-sect-new-version" title="5.1.1.2.&nbsp;New Version Notification">Section&nbsp;5.1.1.2, &#8220;New Version Notification&#8221;</a>

      </li>
   </ul>
</div>
         </li>
         <li>
Added a new chapter <a href="http://www.sonatype.com/books/nexus-book/reference/best.html" title="Chapter&nbsp;17.&nbsp;Nexus Best Practices">Chapter&nbsp;17, <i xmlns:xlink="http://www.w3.org/1999/xlink">Nexus Best Practices</i></a>. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-64" target="_top">NXBOOK-64</a>)


         </li>
         <li>
Added <a href="http://www.sonatype.com/books/nexus-book/reference/user-account.html" title="Chapter&nbsp;14.&nbsp;User Account Plugin">Chapter&nbsp;14, <i xmlns:xlink="http://www.w3.org/1999/xlink">User Account Plugin</i></a> (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-305" target="_top">NXBOOK-305</a>)

         </li>
         <li>

Added <a href="http://www.sonatype.com/books/nexus-book/reference/crowd.html" title="Chapter&nbsp;15.&nbsp;Nexus Atlassian Crowd Plugin">Chapter&nbsp;15, <i xmlns:xlink="http://www.w3.org/1999/xlink">Nexus Atlassian Crowd Plugin</i></a>. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-313" target="_top">NXBOOK-313</a>)

         </li>
         <li>
Added <a href="http://www.sonatype.com/books/nexus-book/reference/bundles.html" title="Chapter&nbsp;16.&nbsp;Artifact Bundles">Chapter&nbsp;16, <i xmlns:xlink="http://www.w3.org/1999/xlink">Artifact Bundles</i></a>. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-309" target="_top">NXBOOK-309</a>)


         </li>
         <li>
Added a new chapter <a href="http://www.sonatype.com/books/nexus-book/reference/sites.html" title="Chapter&nbsp;13.&nbsp;Deploying Sites to Nexus">Chapter&nbsp;13, <i xmlns:xlink="http://www.w3.org/1999/xlink">Deploying Sites to Nexus</i></a>. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-306" target="_top">NXBOOK-306</a>)

         </li>
         <li>

Added a new chapter <a href="http://www.sonatype.com/books/nexus-book/reference/plugdev.html" title="Chapter&nbsp;18.&nbsp;Developing Nexus Plugins">Chapter&nbsp;18, <i xmlns:xlink="http://www.w3.org/1999/xlink">Developing Nexus Plugins</i></a>. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-336" target="_top">NXBOOK-336</a>)

         </li>
         <li>
Updated <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#fig-configuring-pgp-keyservers" title="Figure&nbsp;5.4.&nbsp;Configuring PGP Keyserver Preferences">Figure&nbsp;5.4, &#8220;Configuring PGP Keyserver Preferences&#8221;</a>, to
 include an updated list of keyservers. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-316" target="_top">NXBOOK-316</a>)


         </li>
         <li>
Updating Screenshots in <a href="http://www.sonatype.com/books/nexus-book/reference/staging.html" title="Chapter&nbsp;9.&nbsp;Nexus Staging Suite">Chapter&nbsp;9, <i xmlns:xlink="http://www.w3.org/1999/xlink">Nexus Staging Suite</i></a>. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-308" target="_top">NXBOOK-308</a>)

<div class="itemizedlist">
   <ul type="circle">

      <li>
         Updated <a href="http://www.sonatype.com/books/nexus-book/reference/staging-sect-install.html#fig-staging-links" title="Figure&nbsp;9.3.&nbsp;.*Enterprise Menu after Staging Suite Installation">Figure&nbsp;9.3, &#8220;.*Enterprise Menu after Staging Suite Installation&#8221;</a>.
         
      </li>
      <li>
         Updated <a href="http://www.sonatype.com/books/nexus-book/reference/staging-sect-config.html#fig-staging-edit-profile" title="Figure&nbsp;9.6.&nbsp;Editing a Staging Profile">Figure&nbsp;9.6, &#8220;Editing a Staging Profile&#8221;</a>.
         

      </li>
      <li>
         Updated <a href="http://www.sonatype.com/books/nexus-book/reference/ch09s05.html#fig-staging-artifact-upload" title="Figure&nbsp;9.7.&nbsp;Uploading a Staged Deployment in Nexus">Figure&nbsp;9.7, &#8220;Uploading a Staged Deployment in Nexus&#8221;</a>.
         
      </li>
   </ul>
</div>

         </li>
         <li>
Removed the list of Application Privileges from <a href="http://www.sonatype.com/books/nexus-book/reference/config.html#config-sect-managing-privileges" title="5.1.6.1.&nbsp;Managing Privileges">Section&nbsp;5.1.6.1, &#8220;Managing Privileges&#8221;</a>.

         </li>
         <li>
Added a clarification about the SASL Realm option to <a href="http://www.sonatype.com/books/nexus-book/reference/ldap-sect-connect-auth.html" title="7.3.&nbsp;Connection and Authentication">Section&nbsp;7.3, &#8220;Connection and Authentication&#8221;</a>. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-307" target="_top">NXBOOK-307</a>)


         </li>
         <li>
Fixed a problem with a label in <a href="http://www.sonatype.com/books/nexus-book/reference/intro.html#intro-sect-intro" title="1.1.&nbsp;Introduction">Section&nbsp;1.1, &#8220;Introduction&#8221;</a>. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-219" target="_top">NXBOOK-219</a>)

         </li>
         <li>

Added Linux trademark attribution to <a href="http://www.sonatype.com/books/nexus-book/reference/copyright.html" title="Copyright">Copyright</a>. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-321" target="_top">NXBOOK-321</a>)

         </li>
         <li>
Changed all references to Linux to GNU/Linux. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-322" target="_top">NXBOOK-322</a>)

         </li>

         <li>
Documented the new RSS feed for Errors and Exceptions in <a href="http://www.sonatype.com/books/nexus-book/reference/using-sect-browsing-system.html" title="4.6.&nbsp;Browsing System Feeds">Section&nbsp;4.6, &#8220;Browsing System Feeds&#8221;</a>. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-287" target="_top">NXBOOK-287</a>)

         </li>
         <li>
Fixing typos from proofread of the Edition 1.6 PDF:

<div class="itemizedlist">
   <ul type="circle">
      <li>
         Fixed various spelling and grammar errors on page 78 in
  <a href="http://www.sonatype.com/books/nexus-book/reference/using-sect-browsing-groups.html" title="4.3.&nbsp;Browsing Groups">Section&nbsp;4.3, &#8220;Browsing Groups&#8221;</a> and <a href="http://www.sonatype.com/books/nexus-book/reference/using-sect-searching.html" title="4.4.&nbsp;Searching for Artifacts">Section&nbsp;4.4, &#8220;Searching for Artifacts&#8221;</a>. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-221" target="_top">NXBOOK-221</a>)
         

      </li>
      <li>
         Fixed sentence structure issue on page 77 in <a href="http://www.sonatype.com/books/nexus-book/reference/using-sect-browsing.html" title="4.2.&nbsp;Browsing Repositories">Section&nbsp;4.2, &#8220;Browsing Repositories&#8221;</a>. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-222" target="_top">NXBOOK-222</a>)
         
      </li>
      <li>

         Fixed a hyphenation issue in the first sentence of the
  first paragraph of <a href="http://www.sonatype.com/books/nexus-book/reference/using-sect-browsing.html" title="4.2.&nbsp;Browsing Repositories">Section&nbsp;4.2, &#8220;Browsing Repositories&#8221;</a> on page 76. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-223" target="_top">NXBOOK-223</a>)
         
      </li>
      <li>
         Removed extra comma from third sentence of first paragraph
  of <a href="http://www.sonatype.com/books/nexus-book/reference/maven-sect-adding-to-group.html" title="3.5.&nbsp;Adding a Repository to a Group">Section&nbsp;3.5, &#8220;Adding a Repository to a Group&#8221;</a> on page 72.
  (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-224" target="_top">NXBOOK-224</a>)
         

      </li>
      <li>
         Fixed a that/which in fourth sentence of first paragraph
  of <a href="http://www.sonatype.com/books/nexus-book/reference/maven-sect-adding.html" title="3.4.&nbsp;Adding a New Repository">Section&nbsp;3.4, &#8220;Adding a New Repository&#8221;</a> on page 71. Fixed a
  spelling issue in the last sentence of the same paragraph.
  (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-225" target="_top">NXBOOK-225</a>)
         
      </li>
      <li>

         Fixed a grammar issue in the first sentence of the warning
  on page 67 in <a href="http://www.sonatype.com/books/nexus-book/reference/">???</a>.
  (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-228" target="_top">NXBOOK-228</a>)
         
      </li>
      <li>
         Separated sentence in the <code class="filename">conf/</code>
  entry, <code class="filename">indexer/</code> entry, and
  <code class="filename">logs/</code> entry on page 61 in <a href="http://www.sonatype.com/books/nexus-book/reference/ch02s10.html#sect-installing-work-dir" title="2.10.1.&nbsp;Sonatype Nexus Work Directory">Section&nbsp;2.10.1, &#8220;Sonatype Nexus Work Directory&#8221;</a>. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-232" target="_top">NXBOOK-232</a>)
         

      </li>
      <li>
         Fixed a grammar issue in the first sentence of the note on
  page 57 in <a href="http://www.sonatype.com/books/nexus-book/reference/install-sect-as-a-war.html" title="2.8.&nbsp;Installing the Nexus WAR">Section&nbsp;2.8, &#8220;Installing the Nexus WAR&#8221;</a>. (<a xmlns:xlink="http://www.w3.org/1999/xlink" href="https://issues.sonatype.org/browse/NXBOOK-233" target="_top">NXBOOK-233</a>)
         
      </li>
      <li>

         Fixed grammar issues in the last paragraph of <a href="http://www.sonatype.com/books/nexus-book/reference/ch02s06.html#install-sect-redhat-fedora" title="2.6.1.1.&nbsp;Add Nexus as a Service on Redhat, Fedora, and CentOS">Section&nbsp;2.6.1.1, &#8220;Add Nexus as a Service on Redhat, Fedora, and CentOS&#8221;</a> on page 55.
         
      </li>
   </ul>
</div>
         </li>
      </ul>

   </div>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sonatype?a=UkMaYxoygJQ:oEIuh_cZWqI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sonatype?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=UkMaYxoygJQ:oEIuh_cZWqI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sonatype?i=UkMaYxoygJQ:oEIuh_cZWqI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=UkMaYxoygJQ:oEIuh_cZWqI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sonatype?i=UkMaYxoygJQ:oEIuh_cZWqI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=UkMaYxoygJQ:oEIuh_cZWqI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sonatype?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=UkMaYxoygJQ:oEIuh_cZWqI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sonatype?i=UkMaYxoygJQ:oEIuh_cZWqI:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sonatype/~4/UkMaYxoygJQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2009/11/nexus-book-update-now-available-from-lulu/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sonatype.com/people/2009/11/nexus-book-update-now-available-from-lulu/</feedburner:origLink></item>
		<item>
		<title>Maven &amp; Howard: How to execute the perfect OSS drive-by shooting</title>
		<link>http://feedproxy.google.com/~r/sonatype/~3/pwk0DhZXk5o/</link>
		<comments>http://www.sonatype.com/people/2009/11/maven-howard-how-to-execute-the-perfect-oss-drive-by-shooting/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 23:21:36 +0000</pubDate>
		<dc:creator>jason</dc:creator>
		
		<category><![CDATA[Community]]></category>

		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=3237</guid>
		<description><![CDATA[This post is a response to a post on Ship&#8217;s blog from Friday.

Dependency management is not conflated with builds in the framework as a whole, it is an essential part of a build sytem. While you intended to speak about subtracting dependency management from the build, you end up reinventing the wheel simply because you [...]]]></description>
			<content:encoded><![CDATA[<p><i>This post is a response to a post on Ship&#8217;s blog <a href="http://tapestryjava.blogspot.com/2009/10/maven-throwing-out-bath-water-keeping.html">from Friday</a>.</i></p>

<p>Dependency management is not conflated with builds in the framework as a whole, it is an essential part of a build sytem. While you intended to speak about subtracting dependency management from the build, you end up reinventing the wheel simply because you can&#8217;t be bothered to learn how to use Maven.   Your entry is the rant of an angry five year-old.   I can&#8217;t figure out Maven, so I&#8217;m going to propose using it for dependency management, grafting it to a custom Ant script, and then using Ruby to craft a classpath.  You don&#8217;t have a single qualified statement in the whole entry and you go on to suggest things that work again the idea of creating sensible, easily understood standards for developers.  I&#8217;ll pick two.</p>

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

<p>1) &#8220;Because the build system is so awful.&#8221; You always blather on and on about this but we have thousands of users (and Sonatype hundreds of clients) who would say otherwise. We can&#8217;t seem to get rid of you but maybe you should just use a completely non-Maven build system so we don&#8217;t have to continue to hear from someone who can&#8217;t be bothered to learn about something he didn&#8217;t invent.</p>

<p>I&#8217;m willing to bet my life you&#8217;ll still be the physical embodiment of a build system diatribe. Howard, if you weren&#8217;t so unconstructive and rude you might get a little more help. It&#8217;s called tact, sometimes it&#8217;s useful. It&#8217;s the combination of plugins that always present problems to users because we don&#8217;t validate every possible combination and interaction between plugins. It has taken us many years of listening to users and incorporating feedback from constructive participants to get to where we are. As far as your specific issue, that&#8217;s just a hard problem and inside Eclipse the problem is exacerbated. We&#8217;re working on it, if you would like to help us converge on a solution, you are more than welcome, but your sniping tells me you are less than interested in being constructive.</p>

<p>2) &#8220;Without using the often flakey and undependable M2Eclipse plugin.&#8221; No version specified, no discussion, no tests, no qualification. No emails to the m2eclipse development team, no bug reports, nothing. We have many organizations and users that we are working with to address specific issues on m2eclipse, and we&#8217;re making quick progress on the 1.0 release. If you had been participating, if you had been communicating, we probably could&#8217;ve either solved your problem immediately or pointed you in the right direction. Despite the fact that you frequently snipe us, maybe it would have been a good opportunity to get some constructive feedback from a critic.</p>

<p>You are likely using 0.9.8, which is, frankly, ancient and not supported at the moment. We&#8217;ve recommended people use the 0.9.9 dev builds for some time, and the two builds are a universe apart. If you&#8217;re using 0.9.9 dev builds we&#8217;re pretty quick at fixing problems because the Maven 3.x trunk is synced up with the M2E dev builds. See Howard, useful information. Some constructive feedback. You do know that with the 0.9.9 dev builds we have customizable lifecycle mappings which allow you to eliminate as much of the Maven lifecycle as you wish? Which in your case may be all of it which is perfectly valid. But your solution negates workspace resolution, automatic javadoc and source downloading which are vital for debugging, the POM editing capabilities, searching for dependencies and a slew of other conveniences and your Ruby script just really isn&#8217;t a decent substitute.</p>

<p>Eclipse is just hard to integrate with because it has its own world of resources, files, classpath and pretty much everything else. That&#8217;s not a cop out, it&#8217;s a challenge that we&#8217;re overcoming with real effort. That&#8217;s life and we can deal but that&#8217;s why the M2E plugin is not 1.0 yet. But in all seriousness try 0.9.9 dev builds if you haven&#8217;t. If it&#8217;s WTP problems you&#8217;re having then that isn&#8217;t entirely our fault. WTP is another world of integration &#8230; trying to find a nice euphimism &#8230; challenges.</p>

<p>Did you ever stop to consider that you basically can&#8217;t resuse anyone else&#8217;s software and that you just rewrite everything? The build system doesn&#8217;t seem to be any different. Why don&#8217;t you just write your own if you&#8217;re not happy with anything else? I volunteer to be the first to try Hive Build. Or, why don&#8217;t you just stop and actually spend all this energy trying to help fix some of these problems? You can&#8217;t just take what you like out of a system – in this case the dependency management – and then slag the rest with unqualified nonsense. If it didn&#8217;t work for you and you had a vitriolic, cathartic reaction like Assaf did. At least Assaf redirected his energy toward creating Buildr, and I can respect that. I don&#8217;t think Assaf is entirely accurate, but he said his peace and then made something he likes better. Good for him, and more power to him. You, on the other hand, take what pieces you like, continually bitch, and periodically drive by and shoot us in the back without lifting a finger to help or even communicate.</p>

<p>You know how many things I like about Tapestry? Zero. I&#8217;ve had to work with it in a few places I&#8217;ve been, and I certainly have my opinions.</p>

<p>How many blog entries do you see me taking pot shots at Tapestry. Zero. I&#8217;ve actually had to use Tapestry and I can&#8217;t say it was very enjoyable for me. I could whine and bitch, but I wasn&#8217;t prepared to do anything to fix the issues. So it serves no purpose to complain and I&#8217;m sure there are people who find Tapestry useful and are happy with it.</p>

<p>If you actually had qualified explanations of problems you might get help, but more often than not you lead in with rancor. Doesn&#8217;t exactly endear anyone to your plight. You suffer from &#8220;obnoxious user deficit&#8221;. Instead of showing up at the front door asking questions and providing quality feedback, you barge in shouting about how awful everything is. You start off by annoying the people who could help you the most. I&#8217;m certainly not compelled to do anything for you. You&#8217;re one of those users who thinks acrimony is more effective at delivering results then civil dialog. Don&#8217;t be a tactless open source sniper espousing rancor (TOSSER).</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sonatype?a=pwk0DhZXk5o:sAhzNuhXo2g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sonatype?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=pwk0DhZXk5o:sAhzNuhXo2g:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sonatype?i=pwk0DhZXk5o:sAhzNuhXo2g:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=pwk0DhZXk5o:sAhzNuhXo2g:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sonatype?i=pwk0DhZXk5o:sAhzNuhXo2g:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=pwk0DhZXk5o:sAhzNuhXo2g:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sonatype?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=pwk0DhZXk5o:sAhzNuhXo2g:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sonatype?i=pwk0DhZXk5o:sAhzNuhXo2g:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sonatype/~4/pwk0DhZXk5o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2009/11/maven-howard-how-to-execute-the-perfect-oss-drive-by-shooting/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sonatype.com/people/2009/11/maven-howard-how-to-execute-the-perfect-oss-drive-by-shooting/</feedburner:origLink></item>
		<item>
		<title>Nexus Tips: Disable Redeployment in Nexus</title>
		<link>http://feedproxy.google.com/~r/sonatype/~3/VkzKc8MKS68/</link>
		<comments>http://www.sonatype.com/people/2009/11/nexus-tips-disable-redeployment-in-nexus/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 17:10:26 +0000</pubDate>
		<dc:creator>bdemers</dc:creator>
		
		<category><![CDATA[How-To]]></category>

		<category><![CDATA[Nexus]]></category>

		<category><![CDATA[best practice]]></category>

		<category><![CDATA[nexus pro]]></category>

		<category><![CDATA[repository]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=3111</guid>
		<description><![CDATA[It&#8217;s a fundamental tenet of Maven that release artifacts never change once they are released. This is enforced in Maven by the fact that once a release artifact or POM is located in the local repository, Maven will never check for an updated artifact in a remote repository.   Once an artifact is released, [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a fundamental tenet of Maven that <b>release artifacts never change once they are released</b>. This is enforced in Maven by the fact that once a release artifact or POM is located in the local repository, Maven will never check for an updated artifact in a remote repository.   Once an artifact is released, it is considered a static, unchanging artifact.  If you release an artifact and then subsequently change it (intentionally or otherwise), you&#8217;re in for some fun as people will have different versions based on when they first retrieved it&#8230; that&#8217;s a situation not exactly conducive to a repeatable, standard build.   This blog post discusses a feature in Nexus 1.4 which can enforce this rule and help you avoid problems caused by the redeployment of release artifacts.</p>

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

<p>To illustrate this problem, consider a 1.0 build of your product that depends on foo-1.2.jar.  It works great. Then you build 2.0 of your product which still depends on foo-1.2.jar.  Since then, foo-1.2.jar was patched and now breaks your application.  However the application still works for half of your developers because the original foo-1.2.jar is in their local repository and possibly proxied in another Nexus instance.</p>

<p>The solution is to release a new version foo-1.2.1.jar. (ie foo-1.2.2.jar or foo-1.2.1.1-jar), but that alone isn&#8217;t enough.   You want to make sure that you are using a repository manager that prevents someone from updating a release artifact once it has been published.</p>

<p>It has always been possible to stop people from doing this in Nexus but the solution was difficult to <a href="http://nexus.sonatype.org/about/faq.html#QHowdoIdisableartifactredeployment">explain</a>.    In the Nexus 1.4 release, we have reworked and simplified the interface to encourage this best-practive.</p>

<p>To disable redeployment, edit your repository and set the &#8216;Deployment Policy&#8217; field to &#8216;Disable Redeploy&#8217; then click save.</p>

<p><img class="alignnone size-full wp-image-3115" title="disable-redploy" src="http://www.sonatype.com/people/wp-content/uploads/2009/10/disable-redploy.png" alt="disable-redploy" width="422" height="140" /></p>

<p>Upgrading from a previous version of Nexus 1.4.0 will set this field to &#8216;Allow Redeploy&#8217;, so no existing repositories will be changed and the behavior matches previous releases. However the default value when creating a new repository is now &#8216;Disable Redeploy&#8217;.</p>

<p>When you use Nexus, you are not just using a capable repository manager, you are adopting the best-practice.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sonatype?a=VkzKc8MKS68:OeEA02zzSjU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sonatype?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=VkzKc8MKS68:OeEA02zzSjU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sonatype?i=VkzKc8MKS68:OeEA02zzSjU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=VkzKc8MKS68:OeEA02zzSjU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sonatype?i=VkzKc8MKS68:OeEA02zzSjU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=VkzKc8MKS68:OeEA02zzSjU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sonatype?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=VkzKc8MKS68:OeEA02zzSjU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sonatype?i=VkzKc8MKS68:OeEA02zzSjU:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sonatype/~4/VkzKc8MKS68" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2009/11/nexus-tips-disable-redeployment-in-nexus/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sonatype.com/people/2009/11/nexus-tips-disable-redeployment-in-nexus/</feedburner:origLink></item>
		<item>
		<title>Flexmojos 3.4.2 is out!</title>
		<link>http://feedproxy.google.com/~r/sonatype/~3/sVjLhvJvzIo/</link>
		<comments>http://www.sonatype.com/people/2009/11/flexmojos-342-is-out/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 16:32:47 +0000</pubDate>
		<dc:creator>velo</dc:creator>
		
		<category><![CDATA[Sonatype]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=3220</guid>
		<description><![CDATA[Flexmojos 3.4.2 is out!

Flexmojos provides first-class support for Flex and AIR development within Apache Maven. It allows Maven to compile, optimize, and test Flex SWF, Flex SWC, Air SWF and Air SWC.

We are proud to announce that Flexmojos now supports Flexunit4 and Fluint, being the first maven plugin to support Flexunit 4.

You can see all [...]]]></description>
			<content:encoded><![CDATA[<p>Flexmojos 3.4.2 is out!</p>

<p>Flexmojos provides first-class support for Flex and AIR development within Apache Maven. It allows Maven to compile, optimize, and test Flex SWF, Flex SWC, Air SWF and Air SWC.</p>

<p>We are proud to announce that Flexmojos now supports Flexunit4 and Fluint, being the first maven plugin to support Flexunit 4.</p>

<p>You can see all the other changes in Jira.</p>

<ul>
    <li><a href="https://issues.sonatype.org/browse/FLEXMOJOS/fixforversion/10300#selectedTab=com.atlassian.jira.plugin.system.project%3Aversion-issues-panel">https://issues.sonatype.org/browse/FLEXMOJOS/fixforversion/10300</a></li>
    <li><a href="https://issues.sonatype.org/browse/FLEXMOJOS/fixforversion/10539#selectedTab=com.atlassian.jira.plugin.system.project%3Aversion-issues-panel">https://issues.sonatype.org/browse/FLEXMOJOS/fixforversion/10539</a></li>
</ul>

<p>This is likely the last release in the 3.x series (although any critical bug will force a new release).  Flexmojos 4.x development is focusing Flex 4.  It probably won&#8217;t be compatible with Flex 3, but Flex 3 is well served by Flexmojos 3.x.  Maven version will be bumped too, to Maven 2.2.1 or Maven 3, which contain some bug fixes not available on Maven 2.x (Flexmojos 3.x still compatible with Maven 2.0.9).</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sonatype?a=sVjLhvJvzIo:PaiSBclMYvA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sonatype?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=sVjLhvJvzIo:PaiSBclMYvA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sonatype?i=sVjLhvJvzIo:PaiSBclMYvA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=sVjLhvJvzIo:PaiSBclMYvA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sonatype?i=sVjLhvJvzIo:PaiSBclMYvA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=sVjLhvJvzIo:PaiSBclMYvA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sonatype?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=sVjLhvJvzIo:PaiSBclMYvA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sonatype?i=sVjLhvJvzIo:PaiSBclMYvA:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sonatype/~4/sVjLhvJvzIo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2009/11/flexmojos-342-is-out/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sonatype.com/people/2009/11/flexmojos-342-is-out/</feedburner:origLink></item>
		<item>
		<title>In other news</title>
		<link>http://feedproxy.google.com/~r/sonatype/~3/Y2MhXQMXeAo/</link>
		<comments>http://www.sonatype.com/people/2009/10/29-in-other-news/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 22:28:05 +0000</pubDate>
		<dc:creator>Alex Maier</dc:creator>
		
		<category><![CDATA[Sonatype]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=3229</guid>
		<description><![CDATA[Welcome to the weekly roundup of blog posts that mention Nexus, Maven, and other projects that Sonatype developers contribute to.

DZone: Maven Repository Nexus Pro Upgrades to 1.4
&#8220;The newly announced 1.4 version of Nexus Professional, a Maven repository manager, introduces a full plugin model with improved capabilities.&#8221;
 October 28, 2009

Nexus Maven Repository Manager Users List: Nexus [...]]]></description>
			<content:encoded><![CDATA[<p><em>Welcome to the weekly roundup of blog posts that mention Nexus, Maven, and other projects that Sonatype developers contribute to.</em></p>

<p><span class="nobr"><a rel="nofollow" href="http://www.dzone.com/links/maven_repository_nexus_pro_upgrades_to_14.html">DZone: Maven Repository Nexus Pro Upgrades to 1.4</a></span>
&#8220;The newly announced 1.4 version of Nexus Professional, a Maven repository manager, introduces a full plugin model with improved capabilities.&#8221;
<span style="color: #888888;"> October 28, 2009</span></p>

<p><span class="nobr"><a rel="nofollow" href="http://nexus.sonatype.org/mailing-list-user-archives.html#nabble-td26094827">Nexus Maven Repository Manager Users List: Nexus 1.4.0 Released</a></span>
&#8220;Nexus 1.4.0 has been released. This was a rather substantial release, and contains a lot of new functionality and bug fixes.&#8221;
<span style="color: #888888;"> October 28, 2009</span></p>

<p><span class="nobr"><a rel="nofollow" href="http://www.mosabuam.com/2009/10/company-super-pom-a-maven-practice">Mosabuam: Company Super POM – A Maven Practice</a></span>
&#8220;Soon after the initial install of Maven you will hopefully like it and use it on a bunch of projects. You will notice that there are a bunch of things in the POM that are the same from project to project. Normally that is where the concept of a company or organisation POM appears. On the other hand internally Maven always uses the Super POM as well. Once multiple projects are involved things quickly get confusing, so lets look at this a bit closer and then get to my hybrid approach of a Company Super POM.&#8221;
<span style="color: #888888;"> By Manfred Moser, on 29 Oct 2009</span></p>

<p><span id="more-3229"></span><span class="nobr"><a rel="nofollow" href="http://erichauser.net/2009/10/26/ant2maven-easy-migration-from-ant-to-maven-with-nexus/">Eric Hauser’s Blog: ant2maven: Easy migration from Ant to Maven with Nexus</a></span>
&#8220;In the scope of a much larger project I am working on, I needed to convert a large number of Ant builds to Maven. Having done this in the past, I know that it is certainly a tedious process – particularly regarding depending resolution. So, I decided to make an attempt at scripting that process and ant2maven was born&#8230;&#8221;
<span style="color: #888888;"> By Eric Hauser, on October 26, 2009</span></p>

<p><span class="nobr"><a rel="nofollow" href="http://agoncal.wordpress.com/2009/10/23/because-i-always-forget-how-to-use-maven-ear-plugin/">Antonio Goncalves&#8217; Blog: Because I always forget how to use maven-ear-plugin</a></span>
&#8220;Sometimes you write a blog to express an idea, to ask some feedback from the community, to share a very nice trick… or because you always forget something and want to write it down so you can remember later on. That’s the reason of this post. I never remember how to use the maven-ear-plugin, so I’m writing it down.&#8221;
<span style="color: #888888;"> By Antonio Goncalves, on October 23, 2009</span></p>

<p><span class="nobr"><a rel="nofollow" href="http://weblogs.java.net/blog/editor/archive/2009/10/22/exploring-maven-3-john-ferguson-smart">Java.net: Exploring Maven 3 with John Ferguson Smart</a></span>
&#8220;John Ferguson Smart&#8217;s new java.net article and his latest blog post both investigate aspects of the upcoming Version 3 of Apache Maven. Maven, in case you&#8217;re not familiar with it, is a &#8220;software project management and comprehension tool.&#8221; At the core of Maven&#8217;s application to a specific software project is the project object model (POM). The POM file provides information on the basic structure of the project, and enables Maven to manage a project&#8217;s build, reporting, and documentation. It&#8217;s all about automating tasks that once required a lot of repetitious keystrokes by developers, QA teams, and others.&#8221;
<span style="color: #888888;"> By Java.net, on October 22, 2009</span></p>

<p><span class="nobr"><a rel="nofollow" href="http://electric-monk.blogspot.com/2009/10/faster-development-with-jrebel.html">electric-monk: Faster Development with JRebel</a></span>
&#8220;I&#8217;m going to walk through the steps I took to get JRebel working with maven and Intellij 8 since I ran into a few snags along the way. But first, I should explain why bother install it all. JRebel is a great tool that promises to increase your productivity in Java by enabling all sorts of HotSwaps not normally allowed by the JVM.&#8221;
<span style="color: #888888;"> By Pete, on October 16, 2009</span></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sonatype?a=Y2MhXQMXeAo:Mm_ipi3D8z8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sonatype?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=Y2MhXQMXeAo:Mm_ipi3D8z8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sonatype?i=Y2MhXQMXeAo:Mm_ipi3D8z8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=Y2MhXQMXeAo:Mm_ipi3D8z8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sonatype?i=Y2MhXQMXeAo:Mm_ipi3D8z8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=Y2MhXQMXeAo:Mm_ipi3D8z8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sonatype?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=Y2MhXQMXeAo:Mm_ipi3D8z8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sonatype?i=Y2MhXQMXeAo:Mm_ipi3D8z8:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sonatype/~4/Y2MhXQMXeAo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2009/10/29-in-other-news/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sonatype.com/people/2009/10/29-in-other-news/</feedburner:origLink></item>
		<item>
		<title>New Features in Nexus and Nexus Professional 1.4</title>
		<link>http://feedproxy.google.com/~r/sonatype/~3/K-bwaz3A7qI/</link>
		<comments>http://www.sonatype.com/people/2009/10/new-features-in-nexus-and-nexus-professional-14/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 16:22:07 +0000</pubDate>
		<dc:creator>Brian Fox</dc:creator>
		
		<category><![CDATA[Community]]></category>

		<category><![CDATA[Mercury]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[Nexus]]></category>

		<category><![CDATA[OssBiz]]></category>

		<category><![CDATA[Sonatype]]></category>

		<category><![CDATA[hudson]]></category>

		<category><![CDATA[Book]]></category>

		<category><![CDATA[nexus pro]]></category>

		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=3075</guid>
		<description><![CDATA[The Nexus Professional 1.4 release offers a wide array of features


    Proxy Repository Browsing - With Nexus 1.4, the local cache and logical index views have been separated into separate tabs. We found that the previous single tab with a combo box to select the source was confusing.

    Publishing [...]]]></description>
			<content:encoded><![CDATA[<p>The Nexus Professional 1.4 release offers a wide array of features</p>

<ul>
    <li><strong>Proxy Repository Browsing</strong> - With Nexus 1.4, the local cache and logical index views have been separated into separate tabs. We found that the previous single tab with a combo box to select the source was confusing.
<img class="aligncenter size-medium wp-image-3087" title="repository-manager_browse-repository-index" src="http://www.sonatype.com/people/wp-content/uploads/2009/10/repository-manager_browse-repository-index-273x300.png" alt="repository-manager_browse-repository-index" width="273" height="300" /></li>
    <li><strong>Publishing Web Sites to Nexus Professional</strong> - Nexus Professional 1.4 provides you with a WebDAV endpoint for publishing a web site.  You can configure a Site repository that can be used as a publishing destination for project documentation. This means you don&#8217;t have to worry about providing some alternate solution to host your reports. The full support of Nexus security applies to this new type of repository, so you can control access at a very fine grained level.
<img class="aligncenter size-medium wp-image-3089" title="sites-new-repo" src="http://www.sonatype.com/people/wp-content/uploads/2009/10/sites-new-repo-300x168.png" alt="sites-new-repo" width="300" height="168" /></li>
    <li><strong>Repository Configuration Changes</strong>
<ul>
    <li><strong>Fine-grained control of Redeployment for Hosted Repositories:</strong> Nexus 1.4 provides administrators a simplied way to control how a hosted repository deals with the redeployment of artifacts.   You can configure a repository to allow for the redeployment of previously deployed artifacts, allow for one-time deployment, or to provide a read-only interface for clients.<img class="aligncenter size-medium wp-image-3090" title="repository-manager_repository-config-3" src="http://www.sonatype.com/people/wp-content/uploads/2009/10/repository-manager_repository-config-3-300x179.png" alt="repository-manager_repository-config-3" width="300" height="179" /></li>
</ul>
</li>
    <li><strong>Improvements to the Staging Plugin</strong> - The staging plugin had numerous improvements in the 1.4 release to increase usability and provide new functions for staging artifact bundle and verifying that staging repositories follow user configurable rule sets.
<ul>
    <li><strong>Support for Staging Rulesets:</strong> Nexus Professional 1.4 provides administrators with the ability to define a set of rules to apply to staging repositories before they can be promoted.    The 1.4 release can validate that staging repositories contain valid POMs, valid PGP signatures, javadocs, and sources for all artifacts. The rules are pluggable and we expect to add more rules in the near future to support the <a href="http://repository.apache.org">Apache repository</a> and our <a href="http://oss.sonatype.org">OSS hosting repository</a></li>
    <li><strong>Support for Uploading Artifact Bundles:</strong> The staging plugin now accepts artifact bundle uploads.  Artifact bundles are archives which contain one or more associated artifacts, they are used to publish artifacts to the Central Maven repository, and you can use Artifact bundles to validate artifacts uploaded to Nexus.</li>
    <li><strong>General Usability Improvements in the Staging Plugin:</strong> This release of the Staging plugin focused on usability, the Staging plugin is full of improvements that make the user interface more intuitive and easier to use.</li>
</ul>
</li>
    <li><strong>User Account Plugin</strong> - The User Account Plugin in Nexus Professional gives unauthenticated Nexus users the ability to sign-up for a Nexus account.    When this feature is enabled, a new user would click a sign-up link, fill out a simple profile form, read a captcha, and then activate a new account via an email confirmation message.   Nexus Administrators can configure the default roles and permissions that are granted to newly signed up users.
<img class="aligncenter size-medium wp-image-3092" title="user-account_sign-up-form" src="http://www.sonatype.com/people/wp-content/uploads/2009/10/user-account_sign-up-form-300x261.png" alt="user-account_sign-up-form" width="300" height="261" /></li>
    <li><strong>Repository Summary Panel</strong> - The repository summary panel provides statistics and configuration information for a specific repository.    Users can consult the repository summary panel to gather the necessary distribution management settings for Maven configuration.
<img class="aligncenter size-medium wp-image-3093" title="repository-manager_summary-hosted" src="http://www.sonatype.com/people/wp-content/uploads/2009/10/repository-manager_summary-hosted-293x300.png" alt="repository-manager_summary-hosted" width="293" height="300" /></li>
    <li><strong>Security Improvements</strong> - Many improvements to the user security model.   In general, it is now easier to configure custom role mappings for externally managed users, and Sonatype has paid close attention to the user interface for managing users and roles.   It is easier than ever to configure and secure a Nexus repository.
<ul>
    <li><strong>New User Role Tree:</strong> Click on a user and then click on the user role tree to see how each role contributes to the permissions for a particular user.
<img class="aligncenter size-medium wp-image-3094" title="repository-manager_security-users-role-tree" src="http://www.sonatype.com/people/wp-content/uploads/2009/10/repository-manager_security-users-role-tree-300x275.png" alt="repository-manager_security-users-role-tree" width="300" height="275" /></li>
    <li><strong>New User Privilege Trace feature:</strong> this features allows Nexus administrators to pinpoint which roles contribute which permissions to a particular user.   While the user role tree provides an intuitive interface that lists role in a hierarchy, the privilege trace panel under user administration provides an alternate view.   Click on a particular permission to find the roles contribute that permission to a user.
<img class="aligncenter size-medium wp-image-3095" title="repository-manager_security-users-privilege" src="http://www.sonatype.com/people/wp-content/uploads/2009/10/repository-manager_security-users-privilege-300x275.png" alt="repository-manager_security-users-privilege" width="300" height="275" /></li>
    <li><strong>New Role Tree:</strong> Since a Nexus role can consist of both roles and privileges, we&#8217;ve provided an intuitive tree browser that allows an administrator to browse the hierarchy of roles and privileges associated with a Nexus Role.</li>
    <li><strong>Fine-grained control of View Repository Privilege:</strong> Nexus added the ability to configure a role to prevent users from browsing particular repositories. This is used to provide a cleaner view to users, for example to show them only groups they use via Maven and not confuse them with all the repositories aggregated by that group.</li>
</ul>
</li>
    <li><strong>Integration with Atlassian Crowd</strong> - Atlassian Crowd is a capable user and directory management system that can consolidate authorization and authentication to a central server.  Nexus Professional&#8217;s Atlassian Crowd plugin provides seamless integration between Nexus and Atlassian&#8217;s Crowd server.
<img class="aligncenter size-medium wp-image-3096" title="crowd_server-config-access-settings" src="http://www.sonatype.com/people/wp-content/uploads/2009/10/crowd_server-config-access-settings-300x119.png" alt="crowd_server-config-access-settings" width="300" height="119" /></li>
    <li><strong>Automated Nexus Error Reporting</strong> - Nexus 1.4 ships with an automated error repository system which can be configured to report Nexus exceptions and errors to the Nexus Issue Tracker. If configured, the system will send data to Sonatype&#8217;s Jira instance. The information contained includes the configuration (all passwords are obfuscated) as well as a file list of the repositories and exception traces. All of this data is encrypted using public-key cryptography so only Sonatype can view the contents. We expect that this information will allow us to further refine the stability of Nexus.</li>
    <li><strong>Upgrades to the Nexus Book</strong>
<ul>
    <li>A new chapter on Nexus Best Practices.</li>
    <li>A new chapter on publishing web sites to Nexus.</li>
    <li>Over 100 corrections and clarifications.</li>
    <li>Over 80 new figures and diagrams.</li>
    <li>Addition of a New Nexus Book Cover with the Nexus Logo</li>
</ul>
<img class="aligncenter size-medium wp-image-3098" title="nexus-book-cover-01" src="http://www.sonatype.com/people/wp-content/uploads/2009/10/nexus-book-cover-01-230x300.png" alt="nexus-book-cover-01" width="230" height="300" /></li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sonatype?a=K-bwaz3A7qI:IvFeYBUUv9M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sonatype?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=K-bwaz3A7qI:IvFeYBUUv9M:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sonatype?i=K-bwaz3A7qI:IvFeYBUUv9M:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=K-bwaz3A7qI:IvFeYBUUv9M:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sonatype?i=K-bwaz3A7qI:IvFeYBUUv9M:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=K-bwaz3A7qI:IvFeYBUUv9M:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sonatype?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=K-bwaz3A7qI:IvFeYBUUv9M:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sonatype?i=K-bwaz3A7qI:IvFeYBUUv9M:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sonatype/~4/K-bwaz3A7qI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2009/10/new-features-in-nexus-and-nexus-professional-14/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sonatype.com/people/2009/10/new-features-in-nexus-and-nexus-professional-14/</feedburner:origLink></item>
		<item>
		<title>Maven Tips and Tricks: Optimizing with the Maven Dependency Plugin</title>
		<link>http://feedproxy.google.com/~r/sonatype/~3/S1QF8CsjPec/</link>
		<comments>http://www.sonatype.com/people/2009/10/maven-tips-and-tricks-optimizing-with-the-maven-dependency-plugin/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 22:05:30 +0000</pubDate>
		<dc:creator>Brian Fox</dc:creator>
		
		<category><![CDATA[How-To]]></category>

		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://www.sonatype.com/people/?p=3224</guid>
		<description><![CDATA[On larger projects, additional dependencies often tend to creep into a POM as the number of dependencies grow. As dependencies change, you are often left with dependencies that are not being used, and just as often, you may forget to declare explicit dependencies for libraries you require. Because Maven 2.x includes transitive dependencies in the [...]]]></description>
			<content:encoded><![CDATA[<p>On larger projects, additional dependencies often tend to creep into a POM as the number of dependencies grow. As dependencies change, you are often left with dependencies that are not being used, and just as often, you may forget to declare explicit dependencies for libraries you require. Because Maven 2.x includes transitive dependencies in the compile scope, your project may compile properly but fail to run in production. Consider a case where a project uses classes from a widely used project such as Jakarta Commons BeanUtils. Instead of declaring an explicit dependency on BeanUtils, your project simply relies on a project like Hibernate that references BeanUtils as a transitive dependency. Your project may compile successfully and run just fine, but if you upgrade to a new version of Hibernate that doesn’t depend on BeanUtils, you’ll start to get compile and runtime errors, and it won’t be immediately obvious why your project stopped compiling. Also, because you haven’t explicitly listed a dependency version, Maven cannot resolve any version conflicts that may arise.
<span id="more-3224"></span></p>

<p>A good rule of thumb in Maven is to always declare explicit dependencies for classes referenced in your code. If you are going to be importing Commons BeanUtils classes, you should also be declaring a direct dependency on Commons BeanUtils. Fortunately, via bytecode analysis, the Maven Dependency plugin is able to assist you in uncovering direct references to dependencies. Using the updated POMs we previously optimized, let’s look to see if any errors pop up:</p>

<p><pre>$ mvn dependency:analyze
[INFO] Scanning for projects...
[INFO] Reactor build order:
[INFO]   Chapter 8 Simple Parent Project
[INFO]   Chapter 8 Simple Object Model
[INFO]   Chapter 8 Simple Weather API
[INFO]   Chapter 8 Simple Persistence API
[INFO]   Chapter 8 Simple Command Line Tool
[INFO]   Chapter 8 Simple Web Application
[INFO]   Chapter 8 Parent Project
[INFO] Searching repository for plugin with prefix: 'dependency'.</p>

<p>...</p>

<p>[INFO] ------------------------------------------------------------------------
[INFO] Building Chapter 8 Simple Object Model
[INFO]    task-segment: [dependency:analyze]
[INFO] ------------------------------------------------------------------------
[INFO] Preparing dependency:analyze
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [dependency:analyze]
[WARNING] Used undeclared dependencies found:
[WARNING]    javax.persistence:persistence-api:jar:1.0:compile
[WARNING] Unused declared dependencies found:
[WARNING]    org.hibernate:hibernate-annotations:jar:3.3.0.ga:compile
[WARNING]    org.hibernate:hibernate:jar:3.2.5.ga:compile
[WARNING]    junit:junit:jar:3.8.1:test</p>

<p>...</p>

<p>[INFO] ------------------------------------------------------------------------
[INFO] Building Chapter 8 Simple Web Application
[INFO]    task-segment: [dependency:analyze]
[INFO] ------------------------------------------------------------------------
[INFO] Preparing dependency:analyze
[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:testCompile]
[INFO] No sources to compile
[INFO] [dependency:analyze]
[WARNING] Used undeclared dependencies found:
[WARNING]    org.sonatype.mavenbook.optimize:simple-model:jar:1.0:compile
[WARNING] Unused declared dependencies found:
[WARNING]    org.apache.velocity:velocity:jar:1.5:compile
[WARNING]    javax.servlet:jstl:jar:1.1.2:compile
[WARNING]    taglibs:standard:jar:1.1.2:compile
[WARNING]    junit:junit:jar:3.8.1:test</pre></p>

<p>In the truncated output just shown, you can see the output of the dependency:analyze  goal. This goal analyzes the project to see whether there are any indirect dependencies, or dependencies that are being referenced but are not directly declared. In the simple-model project, the Dependency plugin indicates a “used undeclared dependency” on javax.persistence:persistence-api. To investigate further, go to the simple-model directory and run the dependency:tree goal, which will list all of the project’s direct and transitive dependencies:</p>

<p><pre>$ mvn dependency:tree
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'dependency'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Chapter 8 Simple Object Model
[INFO]    task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
[INFO] [dependency:tree]
[INFO] org.sonatype.mavenbook.optimize:simple-model:jar:1.0
[INFO] +- org.hibernate:hibernate-annotations:jar:3.3.0.ga:compile
[INFO] |  &#45; javax.persistence:persistence-api:jar:1.0:compile
[INFO] +- org.hibernate:hibernate:jar:3.2.5.ga:compile
[INFO] |  +- net.sf.ehcache:ehcache:jar:1.2.3:compile
[INFO] |  +- commons-logging:commons-logging:jar:1.0.4:compile
[INFO] |  +- asm:asm-attrs:jar:1.5.3:compile
[INFO] |  +- dom4j:dom4j:jar:1.6.1:compile
[INFO] |  +- antlr:antlr:jar:2.7.6:compile
[INFO] |  +- cglib:cglib:jar:2.1_3:compile
[INFO] |  +- asm:asm:jar:1.5.3:compile
[INFO] |  &#45; commons-collections:commons-collections:jar:2.1.1:compile
[INFO] &#45; junit:junit:jar:3.8.1:test
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
</pre></p>

<p>From this output, we can see that the persistence-api dependency is coming from hibernate. A cursory scan of the source in this module will reveal many javax.persistence  import statements confirming that we are, indeed, directly referencing this dependency. The simple fix is to add a direct reference to the dependency. In this example, we put the dependency version in simple-parent’s dependencyManagement  section because the dependency is linked to Hibernate, and the Hibernate version is declared here. Eventually you are going to want to upgrade your project’s version of Hibernate. Listing the persistence-api dependency version near the Hibernate dependency version will make it more obvious later when your team modifies the parent POM to upgrade the Hibernate version.</p>

<p>If you look at the dependency:analyze output from the simple-web module, you will see that we also need to add a direct reference to the simple-model dependency. The code in simple-webapp directly references the model objects in simple-model, and the simple-model is exposed to simple-webapp as a transitive dependency via simple-persist. Since this is a sibling dependency that shares both the version and groupId, the dependency can be defined in simple-webapp’s pom.xml using the ${project.groupId} and ${project.version}.</p>

<p>How did the Maven Dependency plugin uncover these issues? How does dependency:analyze know which classes and dependencies are directly referenced by your project’s bytecode? The Dependency plugin uses the ObjectWeb ASM (http://asm.objectweb.org/) toolkit to analyze the raw bytecode. The Dependency plugin uses ASM to walk through all the classes in the current project, and it builds a list of every other class referenced. It then walks through all the dependencies, direct and transitive, and marks off the classes discovered in the direct dependencies. Any classes not located in the direct dependencies are discovered in the transitive dependencies, and the list of “used, undeclared dependencies” is produced.</p>

<p>In contrast, the list of unused, declared dependencies is a little trickier to validate, and less useful than the “used, undeclared dependencies.” For one, some dependencies are used only at runtime or for tests, and they won’t be found in the bytecode. These are pretty obvious when you see them in the output; for example, JUnit appears in this list, but this is expected because it is used only for unit tests. You’ll also notice that the Velocity and Servlet API dependencies are listed in this list for the simple-web module. This is also expected because, although the project doesn’t have any direct references to the classes of these artifacts, they are still essential during runtime.</p>

<p>Be careful when removing any unused, declared dependencies unless you have very good test coverage, or you might introduce a runtime error. A more sinister issue pops up with bytecode optimization. For example, it is legal for a compiler to substitute the value of a constant and optimize away the reference. Removing this dependency will cause the compile to fail, yet the tool shows it as unused. Future versions of the Maven Dependency plugin will provide better techniques for detecting and/or ignoring these types of issues.</p>

<p>You should use the dependency:analyze tool periodically to detect these common errors in your projects. It can be configured to fail the build if certain conditions are found, and it is also available as a report.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/sonatype?a=S1QF8CsjPec:1SLSQC5-H5Q:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/sonatype?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=S1QF8CsjPec:1SLSQC5-H5Q:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/sonatype?i=S1QF8CsjPec:1SLSQC5-H5Q:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=S1QF8CsjPec:1SLSQC5-H5Q:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/sonatype?i=S1QF8CsjPec:1SLSQC5-H5Q:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=S1QF8CsjPec:1SLSQC5-H5Q:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/sonatype?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/sonatype?a=S1QF8CsjPec:1SLSQC5-H5Q:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/sonatype?i=S1QF8CsjPec:1SLSQC5-H5Q:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/sonatype/~4/S1QF8CsjPec" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.sonatype.com/people/2009/10/maven-tips-and-tricks-optimizing-with-the-maven-dependency-plugin/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.sonatype.com/people/2009/10/maven-tips-and-tricks-optimizing-with-the-maven-dependency-plugin/</feedburner:origLink></item>
	</channel>
</rss>
