<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>manandbytes</title>
	<atom:link href="http://manandbytes.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://manandbytes.wordpress.com</link>
	<description>less work for humans, more work for machines. just as it should be</description>
	<lastBuildDate>Wed, 29 Jun 2011 23:35:30 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='manandbytes.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>manandbytes</title>
		<link>http://manandbytes.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://manandbytes.wordpress.com/osd.xml" title="manandbytes" />
	<atom:link rel='hub' href='http://manandbytes.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Just clone it!</title>
		<link>http://manandbytes.wordpress.com/2011/06/29/just-clone-it/</link>
		<comments>http://manandbytes.wordpress.com/2011/06/29/just-clone-it/#comments</comments>
		<pubDate>Wed, 29 Jun 2011 20:45:00 +0000</pubDate>
		<dc:creator>manandbytes</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[jenkins]]></category>
		<category><![CDATA[virtualization]]></category>

		<guid isPermaLink="false">http://manandbytes.wordpress.com/?p=1418</guid>
		<description><![CDATA[Some real-life example: someone had a problem changing a default port for Jenkin&#8217;s HTTP connector. I already had a similar system available building couple projects. While reading that post I&#8217;ve realised that it will cost me almost nothing to help this person and check out if this problem exist. How this could be that simple? [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=1418&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Some real-life example: someone <a href="https://groups.google.com/d/topic/jenkinsci-users/kDVKnRFhvq8/discussion">had a problem</a> changing a default port for Jenkin&#8217;s HTTP connector. I already had a similar system available building couple projects. While reading that post I&#8217;ve realised that it will cost me almost nothing to help this person and check out if this problem exist. How this could be that simple? </p>
<div id="outline-container-1" class="outline-3">
<h3 id="sec-1">You can use complex systems. Locally!</h3>
<div class="outline-text-3" id="text-1">
<p> First, because I run Jenkins locally. You can check out Dave Carver&#8217;s post <a href="http://swik.net/Eclipse/Planet+Eclipse/Dave+Carver:+Local+Continuous+Integration+with+Hudson+and+Git/dx2tn">Local Continuous Integration with Hudson and Git</a> (sorry, I failed to find a link to original post on <a href="http://intellectualcramps.wordpress.com/">his blog</a>) why and how to setup such environment. Here is <a href="http://intellectualcramps.wordpress.com/2010/04/22/local-continuous-integration-with-hudson-part-ii/">his another post</a> on how such setup affects your development workflow.  <a href="http://qualityswdev.com/2011/02/02/distributed-ci-how-it-could-work/">Distributed CI: How it could work « Quality Software Development with Ease</a> has a lot of details how to deal with distributed builds. My setup is slightly different as I use a vitrual machine to run Jenkins, with a Git, Subversion and some other tools like several versions of JDK etc. And all this stuff is completely independent from my main development tools. </p>
</p></div>
</p></div>
<div id="outline-container-2" class="outline-3">
<h3 id="sec-2">You can freely experiment with such systems</h3>
<div class="outline-text-3" id="text-2">
<p> Second, because running on a virtual machine gives my some other benefits like being able to pause it or clone at any moment. And I did exactly this: paused running VM, cloned it and started it back. Now I was able to experiment with a completely working system. It actually took about 15 minutes during a lunch to verify this without any risk to break my working system. </p>
</p></div>
</p></div>
<div id="outline-container-3" class="outline-3">
<h3 id="sec-3">Summary</h3>
<div class="outline-text-3" id="text-3">
<p> Here are two more reasons why using virtualization even on something that small as Lenovo ThinkPad X201 Tablet makes sence.  You may use this system full-time. Or only from time to time. It may be critical for your daily activity.  Or completely irrelevant and nothing will happen if it will be unavailable for a week. The main point while using virtualization is: it doesn&#8217;t matter! </p>
</p></div>
</p></div><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/manandbytes.wordpress.com/1418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/manandbytes.wordpress.com/1418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/manandbytes.wordpress.com/1418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/manandbytes.wordpress.com/1418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/manandbytes.wordpress.com/1418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/manandbytes.wordpress.com/1418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/manandbytes.wordpress.com/1418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/manandbytes.wordpress.com/1418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/manandbytes.wordpress.com/1418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/manandbytes.wordpress.com/1418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/manandbytes.wordpress.com/1418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/manandbytes.wordpress.com/1418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/manandbytes.wordpress.com/1418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/manandbytes.wordpress.com/1418/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=1418&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://manandbytes.wordpress.com/2011/06/29/just-clone-it/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/40825589ef2b8865a1a642098b0c64f8?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">manandbytes</media:title>
		</media:content>
	</item>
		<item>
		<title>Don&#8217;t know how to move to Git?</title>
		<link>http://manandbytes.wordpress.com/2011/04/29/dont-know-how-to-move-to-git/</link>
		<comments>http://manandbytes.wordpress.com/2011/04/29/dont-know-how-to-move-to-git/#comments</comments>
		<pubDate>Fri, 29 Apr 2011 18:39:00 +0000</pubDate>
		<dc:creator>manandbytes</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[dvcs]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[scm]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://manandbytes.wordpress.com/?p=1404</guid>
		<description><![CDATA[We started out with SVN mostly because that was what everyone was used to. A year ago or so, one of our remote developers started using a git-svn mirror to remove some of the latency issues they had with SVN. Someone else put together a ten page wiki on how to easily use a git-svn [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=1404&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote>
<p>We started out with SVN mostly because that was what everyone was used to. A year ago or so, one of our remote developers started using a git-svn mirror to remove some of the latency issues they had with SVN. Someone else put together a ten page wiki on how to easily use a git-svn mirror and push back to the canonical SVN repo. As time went on, interest in git grew and new modules were created in git, instead of our SVN repositories.  Finally there was a push to move everything to git.
</p>
</blockquote>
<p> It&#8217;s not a problem for a new codebase, but preserving all history (with authors as well) may be critical for existing ones. If you are not sure how to convert your existing SVN repositories into Git, <a href="http://www.sonatype.com/people/2011/04/goodbye-svn-hello-git/">Goodbye SVN, Hello Git</a> from Sonatype provides a background why they moved to Git and a step-by-step instructions. </p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/manandbytes.wordpress.com/1404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/manandbytes.wordpress.com/1404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/manandbytes.wordpress.com/1404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/manandbytes.wordpress.com/1404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/manandbytes.wordpress.com/1404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/manandbytes.wordpress.com/1404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/manandbytes.wordpress.com/1404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/manandbytes.wordpress.com/1404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/manandbytes.wordpress.com/1404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/manandbytes.wordpress.com/1404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/manandbytes.wordpress.com/1404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/manandbytes.wordpress.com/1404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/manandbytes.wordpress.com/1404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/manandbytes.wordpress.com/1404/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=1404&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://manandbytes.wordpress.com/2011/04/29/dont-know-how-to-move-to-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/40825589ef2b8865a1a642098b0c64f8?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">manandbytes</media:title>
		</media:content>
	</item>
		<item>
		<title>Why -source and -target not a convention</title>
		<link>http://manandbytes.wordpress.com/2011/04/27/convention-over-configuration-epic-fail/</link>
		<comments>http://manandbytes.wordpress.com/2011/04/27/convention-over-configuration-epic-fail/#comments</comments>
		<pubDate>Wed, 27 Apr 2011 10:00:00 +0000</pubDate>
		<dc:creator>manandbytes</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://manandbytes.wordpress.com/?p=970</guid>
		<description><![CDATA[Convention over configuration is a simple concept. Maven incorporates this concept by providing sensible default behavior for projects. The Compiler Plugin is used to compile the sources of your project and provides some defaults for source/target levels for Java source code. You may think that source/target levels is a part of this &#8216;convention over configuration&#8217; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=970&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Convention over configuration is a simple concept. Maven incorporates this concept by providing sensible default behavior for projects. The Compiler Plugin is used to compile the sources of your project and provides some defaults for source/target levels for Java source code. </p>
<p> You may think that source/target levels is a part of this &#8216;convention over configuration&#8217; concept. But actually they are not, so keep reading to learn why. </p>
<p> What problems to expect when building something that small as <a href="https://github.com/kevinsawicki">Kewin Sawicki</a>&#8216;s <a href="https://github.com/kevinsawicki/java-timeago">TimeAgo library</a> with Maven? No, I&#8217;m not kidding since I&#8217;ve expected no problems at all but&hellip; Unfortunately, build of the <a href="https://github.com/kevinsawicki/java-timeago/commit/3b2ec34b94a8f5aa4c5a38dabcdcc95a492336e3">current master branch</a> fails: </p>
<pre class="example">[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure

/org.github.timeago/src/main/java/org/github/timeago/TimeAgo.java:[129,23] cannot find symbol
symbol  : method format(java.lang.String,long)
location: class java.text.MessageFormat
...
[INFO] ------------------------------------------------------------------------
</pre>
<p> There are 5 such problems related to <code>java.text.MessageFormat</code>&#8216;s method <code>format(String pattern, Object... arguments)</code>. This method uses <a href="http://download.oracle.com/javase/1.5.0/docs/guide/language/varargs.html">the varargs feature</a> introduced in Java5, as well as the method itself, so the problem is obvious: Maven tries to compile TimeAgo with pre-Java5 JDK. </p>
<p> How is it posible?! It was taken for granted that Maven allows to avoid such problems but, for some reason, I can&#8217;t build it as is. </p>
<p> Here we have a problem, that Martin Fawler <a href="http://martinfowler.com/bliki/ReproducibleBuild.html">explained</a> some time ago: </p>
<blockquote>
<p>One of the prevailing assumptions that fans of <a href="http://martinfowler.com/articles/continuousIntegration.html">Continuous Integration</a> have is that builds should be reproducible. By this we mean that at any point you should be able to take some older version of the system that you are working on and build it from source in exactly the same way as you did then.
</p>
</blockquote>
<p> Let&#8217;s digg into some details and try to find out why it&#8217;s unreproducible and how easy it will be to find a configuration that &#8216;just works&#8217;. </p>
<div id="outline-container-1" class="outline-3">
<h3 id="sec-1">Problem: unreproducible build</h3>
<div class="outline-text-3" id="text-1">
<p> So, right now I have 3 different JDK installed: </p>
<ul>
<li><i>usr/lib/jvm/java-6-openjdk</i> </li>
<li><i>usr/lib/jvm/java-1.5.0-sun-1.5.0.22</i> </li>
<li><i>usr/lib/jvm/java-6-sun-1.6.0.24</i> </li>
</ul>
<p> Lets add 4 versions of Maven2 to the mix: </p>
<ul>
<li>Apache Maven 2.1.0 (r755702; 2009-03-18 21:10:27+0200) </li>
<li>Apache Maven 2.2.1 (rdebian-4) </li>
<li>Apache Maven 3.0.2 (r1056850; 2011-01-09 02:58:10+0200) </li>
<li>Apache Maven 3.0.4-SNAPSHOT (rNON-CANONICAL_2011-04-06_23-20_mn; 2011-04-06 23:20:51+0300) </li>
</ul>
<p> and try to build TimeAgo with <code>mvn clean compile</code> using <a href="http://manandbytes.wordpress.com/2011/04/07/how-to-emulate-jenkins-matrix-build-in-command-line-ad-hoc/">bash-matrix-project</a> <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  approach described earlier: </p>
<table border="2" cellspacing="0" cellpadding="6" rules="groups">
<caption></caption>
<col class="left" />
<col class="left" />
<tbody>
<tr>
<td class="left">Apache Maven 2.1.0 (r755702; 2009-03-18 21:10:27+0200)</td>
<td class="left">FAIL</td>
</tr>
<tr>
<td class="left">Apache Maven 2.2.1 (rdebian-4)</td>
<td class="left">FAIL</td>
</tr>
<tr>
<td class="left">Apache Maven 3.0.2 (r1056850; 2011-01-09 02:58:10+0200)</td>
<td class="left">SUCCESSFUL</td>
</tr>
<tr>
<td class="left">Apache Maven 3.0.4-SNAPSHOT (rNON-CANONICAL_2011-04-06_23-20_mn; 2011-04-06 23:20:51+0300)</td>
<td class="left">SUCCESSFUL</td>
</tr>
</tbody>
</table>
<p> As build fails for Maven 2.x but succeeds for Maven 3.x, regardless of JDK been used, definetely, it&#8217;s not reproducible. Let&#8217;s try to find the reason for such strange behavior. </p>
</p></div>
</p></div>
<div id="outline-container-2" class="outline-3">
<h3 id="sec-2">Why?</h3>
<div class="outline-text-3" id="text-2">
<p> Fire build again but this time we&#8217;ll set source/target levels explicitly, via command-line options <code>-Dmaven.compiler.source=1.5</code> and <code>-Dmaven.compiler.target=1.5</code> and it succeeds for all environments. </p>
</p></div>
<div id="outline-container-2_1" class="outline-4">
<h4 id="sec-2_1">#1: missing source/target levels in POM</h4>
<div class="outline-text-4" id="text-2_1">
<p> Looking at the project&#8217;s POM, we see nothing related to compiler plugin&#8217;s settings. This way build depends on default values for source and target levels implemented in currently effective version of the compiler plugin. I strongly disagree with comments like </p>
<blockquote>
<p>Maven has a strong preference for &laquo;convention over configuration&raquo; which means that requiring the source and target entries in the pom is not really reasonable IMO. Instead, the defaults should be documented better, and perhaps the error message could be adjusted to point to a FAQ entry that explains things for new users.
</p>
</blockquote>
<p> <a href="http://jira.codehaus.org/browse/MCOMPILER-57">on MCOMPILER-57</a>. Comments on <a href="http://jira.codehaus.org/browse/MCOMPILER-80">MCOMPILER-80</a> like </p>
<blockquote>
<p>Using default source/target levels in a build tool is not a good idea since it makes both the success of the build and its artifacts dependent on the environment in which it was run, contrary to the goals of a reproducible build. A given module or tree of modules will have a certain source level it requires in order to compile, so increments to this in the POM should be coversioned with source code changes to use new language features. Target level (usually but not necessarily the same as source level) is even more important to specify explicitly, because it is not obvious when you get it wrong &#8211; until your bytecode fails to load on an older customer JVM which you had intended to still support.
</p>
</blockquote>
<p> or this one </p>
<blockquote>
<p>Just that, the source/target levels should be decided by its owners/developers, NOT BY Maven. It&#8217;s the project owner/developer&#8217;s responsibility to decided the expected source/target levels and set the values in the project POM. Thus to have reproducible builds across computers/jdks.
</p>
</blockquote>
<p> reflect a reality much better. </p>
</p></div>
</p></div>
<div id="outline-container-2_2" class="outline-4">
<h4 id="sec-2_2">Maven2 help plug-in is not that helpful</h4>
<div class="outline-text-4" id="text-2_2">
<p> I tryed to inspect the project&#8217;s effective POM with <a href="http://maven.apache.org/plugins/maven-help-plugin/">maven-help-plugin</a>, as you may find <a href="http://stackoverflow.com/questions/3012582/maven-default-compiler-compliance-level/3012615#3012615">answers like this</a>. For Maven 2.x it&#8217;s quite small, due to <a href="http://jira.codehaus.org/browse/MPH-13">some bug</a> in Maven2 and not in plugin: </p>
<pre class="brush: plain; light: true;">
&lt;pluginManagement&gt;
  &lt;plugins&gt;
    &lt;plugin&gt;
      &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
      &lt;version&gt;2.0.2&lt;/version&gt;
    &lt;/plugin&gt;
  &lt;/plugins&gt;
&lt;/pluginManagement&gt;
</pre>
<p> This bug has been reported as fixed in Maven 3.x and shouldn&#8217;t affect maven-help-plugin: </p>
<pre class="brush: plain; light: true;">
&lt;build&gt;
  &lt;plugins&gt;
    &lt;plugin&gt;
      &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
      &lt;version&gt;2.3.2&lt;/version&gt;
      &lt;executions&gt;
        &lt;execution&gt;
          &lt;id&gt;default-testCompile&lt;/id&gt;
          &lt;phase&gt;test-compile&lt;/phase&gt;
          &lt;goals&gt;
            &lt;goal&gt;testCompile&lt;/goal&gt;
          &lt;/goals&gt;
        &lt;/execution&gt;
        &lt;execution&gt;
          &lt;id&gt;default-compile&lt;/id&gt;
          &lt;phase&gt;compile&lt;/phase&gt;
          &lt;goals&gt;
            &lt;goal&gt;compile&lt;/goal&gt;
          &lt;/goals&gt;
        &lt;/execution&gt;
      &lt;/executions&gt;
    &lt;/plugin&gt;
  &lt;/plugins&gt;
&lt;/build&gt;
</pre>
<p> Yup, there are more deatils provided but still no effective settings for source and target. Since it doesn&#8217;t show maven-compiler-plugin&#8217;s effective source and target levels, don&#8217;t put your trust in maven-help-plugin. </p>
</p></div>
</p></div>
<div id="outline-container-2_3" class="outline-4">
<h4 id="sec-2_3">#2: undefined version of the Maven Compiler Plugin</h4>
<div class="outline-text-4" id="text-2_3">
<p> But which source and target options are effective right now?  There are two problems with plugin&#8217;s version resolution. The first one, from <a href="https://cwiki.apache.org/MAVEN/maven-3x-compatibility-notes.html#Maven3.xCompatibilityNotes-AutomaticPluginVersionResolution">Maven 3.x Compatibility Notes</a>: </p>
<blockquote>
<p>When a plugin was invoked without an explicit version given in the POM or on the command line, Maven 2.x used to pick the latest version available where the latest version could either be a release or a snapshot.
</p>
</blockquote>
<p> And the second, the default source and target levels are moving targets. According to our experiment, we actualy depend on two different versions of compiler plugin (2.0.2 and 2.3.2), declared for already released versions of Maven2. But what about intermediate versions and requests like <a href="http://jira.codehaus.org/browse/MCOMPILER-46">change to 1.4</a>, <a href="http://jira.codehaus.org/browse/MCOMPILER-124">to 1.5</a> or even refuse building if they are missing? </p>
<p> Unspecified plugin&#8217;s version is as bad as a missing source level and is finally considered a bad-practice and scheduled for removal since Maven3. </p>
</p></div>
</p></div>
</p></div>
<div id="outline-container-3" class="outline-3">
<h3 id="sec-3">Solutions</h3>
<div class="outline-text-3" id="text-3">    </div>
<div id="outline-container-3_1" class="outline-4">
<h4 id="sec-3_1">The best one</h4>
<div class="outline-text-4" id="text-3_1">
<p> Source code&#8217;s <code>source</code> and <code>target</code> levels are not a convention, it&#8217;s a configuration (like groupId, artifactId or your packages&#8217; name). You MUST specify them explicitly, it&#8217;s not a Maven&#8217;s (or any other tool&#8217;s) responsibility. So just specify them: </p>
<pre class="brush: diff; light: true;">
diff --git a/org.github.timeago/pom.xml b/org.github.timeago/pom.xml
index 1a3fe35..76157c5 100644
--- a/org.github.timeago/pom.xml
+++ b/org.github.timeago/pom.xml
@@ -27,6 +27,14 @@
    &lt;plugins&gt;
      &lt;plugin&gt;
        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
+        &lt;artifactId&gt;maven-compiler-plugin&lt;/artifactId&gt;
+        &lt;configuration&gt;
+          &lt;source&gt;1.5&lt;/source&gt;
+          &lt;target&gt;1.5&lt;/target&gt;
+        &lt;/configuration&gt;
+      &lt;/plugin&gt;
+      &lt;plugin&gt;
+        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
        &lt;artifactId&gt;maven-jar-plugin&lt;/artifactId&gt;
        &lt;configuration&gt;
          &lt;archive&gt;
</pre>
<p> Even without specifying maven-compiler-plugin&#8217;s version, such small change makes maven-help-plugin more useful in both Maven2 and Maven 3 as well. </p>
</p></div>
</p></div>
<div id="outline-container-3_2" class="outline-4">
<h4 id="sec-3_2">Pin plugin&#8217;s version</h4>
<div class="outline-text-4" id="text-3_2">
<p> With <a href="http://maven.apache.org/enforcer/enforcer-rules/requirePluginVersions.html">Maven Enforcer plugin</a> you can cope with a second problem and fail a build if any plugin don&#8217;t have a version: </p>
<pre class="brush: diff; light: true;">
diff --git a/org.github.timeago/pom.xml b/org.github.timeago/pom.xml
index 6701f31..dd7b3e4 100644
--- a/org.github.timeago/pom.xml
+++ b/org.github.timeago/pom.xml
@@ -61,6 +61,24 @@
          &lt;/execution&gt;
        &lt;/executions&gt;
      &lt;/plugin&gt;
+      &lt;plugin&gt;
+        &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
+        &lt;artifactId&gt;maven-enforcer-plugin&lt;/artifactId&gt;
+        &lt;version&gt;1.0&lt;/version&gt;
+        &lt;executions&gt;
+          &lt;execution&gt;
+            &lt;id&gt;enforce-plugin-versions&lt;/id&gt;
+            &lt;goals&gt;
+              &lt;goal&gt;enforce&lt;/goal&gt;
+            &lt;/goals&gt;
+          &lt;/execution&gt;
+        &lt;/executions&gt;
+        &lt;configuration&gt;
+          &lt;rules&gt;
+            &lt;requirePluginVersions /&gt;
+          &lt;/rules&gt;
+        &lt;/configuration&gt;
+      &lt;/plugin&gt;
    &lt;/plugins&gt;
  &lt;/build&gt;
</pre>
<p> After this change, your build will fail if some plugins are missing valid versions, with a clear reason: </p>
<pre class="example">[INFO] ------------------------------------------------------------------------
[INFO] Building Time Ago
[INFO]    task-segment: [test-compile]
[INFO] ------------------------------------------------------------------------
[INFO] [enforcer:enforce {execution: enforce-plugin-versions}]
[WARNING] Rule 0: org.apache.maven.plugins.enforcer.RequirePluginVersions failed with message:
Some plugins are missing valid versions:(LATEST RELEASE SNAPSHOT are not allowed )
org.apache.maven.plugins:maven-clean-plugin.    The version currently in use is 2.3
org.apache.maven.plugins:maven-resources-plugin.        The version currently in use is 2.3
org.apache.maven.plugins:maven-deploy-plugin.   The version currently in use is 2.5
org.apache.maven.plugins:maven-compiler-plugin.         The version currently in use is 2.0.2
org.apache.maven.plugins:maven-install-plugin.  The version currently in use is 2.3.1
org.apache.maven.plugins:maven-surefire-plugin.         The version currently in use is 2.7.2
org.apache.maven.plugins:maven-site-plugin.     The version currently in use is 2.0
org.apache.maven.plugins:maven-jar-plugin.      The version currently in use is 2.2

[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed.
</pre>
<p> However, you still have to be careful when choosing versions. Using wrong version, you may, by accident, narrow down a range of the tools available to your consumers. </p>
<p> For instance, one of the real projects I know about, is a Flex application that requires some specific version of a plugin to be used and that very version works with an exact version of Maven 2. So using any plugins that require anything higher than Maven 2.0.8, IIRC, is a &#8216;no-no&#8217; for this project. </p>
<p> Recent changes in Jenkins is another example. It <a href="https://github.com/jenkinsci/jenkins/commit/0ae70779bebf8bf7da38f5ea4438f08ab0458942">started</a> using <a href="https://github.com/cloudbees/maven-license-plugin">com.cloudbees.maven-license-plugin</a> to check license headers in source files. Initially this plugin <a href="https://github.com/cloudbees/maven-license-plugin/blob/4067564fbe1061062b17bd739143ef02886724e0/pom.xml">required</a> Maven 3.x and introducing this dependency to Jenkins made it impossible to build Jenkins with Maven 2.x for no apparent reason. Fixing this problem, in this particular case, was easy for two reasons: </p>
<ul>
<li>the author, <a href="http://www.kohsuke.org/">Kohsuke Kawaguchi</a>, has commit rights to both codebases; </li>
<li><a href="https://github.com/jenkinsci/jenkins/commit/33847324b01a3556224588d3c810d1a32f79a665">it was</a> easy <a href="https://github.com/cloudbees/maven-license-plugin/commit/1b30c6facbac1331d0b69660ecf596011b9ba8a9">to fix</a> in both projects but <a href="https://github.com/cloudbees/maven-license-plugin/commit/41b8410d716dc35fa2170156cbf0a82c2ab6986c">required</a> a new version of   plugin to be released. </li>
</ul>
<p> But this not true for most projects.  I would rather be more consvervative in such situations and not use the latest (but not always greatest) versions without clear benefits. </p>
</p></div>
</p></div>
</p></div>
<div id="outline-container-4" class="outline-3">
<h3 id="sec-4">Summary</h3>
<div class="outline-text-3" id="text-4">
<p>One apple a day&hellip; When it refers to the Maven compiler plugin, you: </p>
<ul>
<li>must explicitly define source and target levels </li>
<li>should specify version of plugin (but please, be sane) </li>
</ul>
<p> These small changes will make your builds much more stable and resistant to changes in environments while obeying its contracts like &#8216;I&#8217;m Java5-compatible&#8217;. </p>
</div></div><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/manandbytes.wordpress.com/970/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/manandbytes.wordpress.com/970/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/manandbytes.wordpress.com/970/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/manandbytes.wordpress.com/970/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/manandbytes.wordpress.com/970/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/manandbytes.wordpress.com/970/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/manandbytes.wordpress.com/970/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/manandbytes.wordpress.com/970/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/manandbytes.wordpress.com/970/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/manandbytes.wordpress.com/970/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/manandbytes.wordpress.com/970/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/manandbytes.wordpress.com/970/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/manandbytes.wordpress.com/970/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/manandbytes.wordpress.com/970/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=970&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://manandbytes.wordpress.com/2011/04/27/convention-over-configuration-epic-fail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/40825589ef2b8865a1a642098b0c64f8?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">manandbytes</media:title>
		</media:content>
	</item>
		<item>
		<title>Installing Apache Harmony on Debian</title>
		<link>http://manandbytes.wordpress.com/2011/04/17/installing-apache-harmony-on-debian/</link>
		<comments>http://manandbytes.wordpress.com/2011/04/17/installing-apache-harmony-on-debian/#comments</comments>
		<pubDate>Sun, 17 Apr 2011 18:05:00 +0000</pubDate>
		<dc:creator>manandbytes</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[harmony]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://manandbytes.wordpress.com/?p=1183</guid>
		<description><![CDATA[What&#8217;s Apache Harmony? It&#8217;s an open source Java SE implementation with an unclear future. But, please, don&#8217;t ask me &#8216;Why installing it?&#8217; Because developers are curious creatures I don&#8217;t like to install a software distributed as a tar.gz archives. If it is possible, I&#8217;ll use my distribution&#8217;s native packages. It turned out that Apache Harmony [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=1183&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>What&#8217;s <a href="http://harmony.apache.org/">Apache Harmony</a>? It&#8217;s an open source Java SE implementation with an unclear future. But, please, don&#8217;t ask me &#8216;Why installing it?&#8217; Because developers are curious creatures <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  </p>
<p> I don&#8217;t like to install a software distributed as a tar.gz archives. If it is possible, I&#8217;ll use my distribution&#8217;s native packages. It turned out that Apache Harmony project provides prebuilt packages for Debian/Ubuntu. So you have to download packages one by one and just install with <code>dpkg --install harmony-5.0-jre_0.0r991518-1_i386.deb</code>. </p>
<p> There is nothing wrong if you&#8217;re interested in a one-time installation but there are manual actions required when (and if) Harmony project provides updates: </p>
<ul>
<li>you have to be notified somehow about the fact that a new version is   available; </li>
<li>you have to download a number of packages one by one; </li>
<li>you may have to (semi)manually resolve missing dependencies. </li>
</ul>
<p> As my motto says, </p>
<blockquote>
<p>less work for humans, more work for machines. just as it should be
</p>
</blockquote>
<p> so let my machines do some more work <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  </p>
<div id="outline-container-1" class="outline-4">
<h4 id="sec-1">Make packages&#8217; location known to APT</h4>
<div class="outline-text-4" id="text-1">
<p>Add these two lines to <code>/etc/apt/sources.list</code>: </p>
<pre class="example">deb <a href="http://mirrors.ibiblio.org/pub/mirrors/apache/harmony/milestones/6.0/debian/i386/" rel="nofollow">http://mirrors.ibiblio.org/pub/mirrors/apache/harmony/milestones/6.0/debian/i386/</a> ./
deb <a href="http://mirrors.ibiblio.org/pub/mirrors/apache/harmony/milestones/5.0/debian/i386/" rel="nofollow">http://mirrors.ibiblio.org/pub/mirrors/apache/harmony/milestones/5.0/debian/i386/</a> ./
</pre>
<p> and update the list of available packages with <code>aptitude update</code>. </p>
<p> For most Apache projects, all links on the download page point to the best mirror site based on your location, and Harmony&#8217;s <a href="http://harmony.apache.org/download.cgi">Project Downloads</a> page is no different.  It suggested <a href="http://apache.vc.ukrtel.net/">http://apache.vc.ukrtel.net/</a> as the best mirror site for my current location and, unfortunately, files mirrored to <code>/harmony/milestones/6.0/M3/debian/i386</code>. Chances are that the next milestone builds will be stored in other directory like <code>/harmony/milestones/6.0/M4/debian/i386</code> and I have to touch <code>sources.list</code>. I think that layout provided by <a href="http://mirrors.ibiblio.org/pub/mirrors/apache/harmony/">mirrors.ibiblio.org</a> doesn&#8217;t have these drawbacks but only time will tell. </p>
</p></div>
</p></div>
<div id="outline-container-2" class="outline-4">
<h4 id="sec-2">Install them</h4>
<div class="outline-text-4" id="text-2">
<p>Installation is as simple as running <code>aptitude install harmony-5.0-hdk harmony-6.0-hdk</code>. </p>
</div></div>
<div id="outline-container-3" class="outline-4">
<h4 id="sec-3">Check what&#8217;s installed</h4>
<div class="outline-text-4" id="text-3">
<p>Let&#8217;s check what we have for main two executables, <code>update-alternatives --display java</code>: </p>
<pre class="example">java - manual mode
  link currently points to /usr/lib/jvm/java-6-sun/jre/bin/java
/usr/bin/gij-4.4 - priority 1044
/usr/bin/gij-4.5 - priority 1045
/usr/bin/java-harmony - priority 30
  slave java.1.gz: /usr/share/man/man1/java-harmony.1.gz
/usr/bin/java-harmony-6.0 - priority 30
  slave java.1.gz: /usr/share/man/man1/java-harmony-6.0.1.gz
/usr/lib/jvm/java-1.5.0-sun/jre/bin/java - priority 53
  slave java.1.gz: /usr/lib/jvm/java-1.5.0-sun/jre/man/man1/java.1.gz
/usr/lib/jvm/java-6-openjdk/jre/bin/java - priority 1061
  slave java.1.gz: /usr/lib/jvm/java-6-openjdk/jre/man/man1/java.1.gz
/usr/lib/jvm/java-6-sun/jre/bin/java - priority 63
  slave java.1.gz: /usr/lib/jvm/java-6-sun/jre/man/man1/java.1.gz
Current 'best' version is '/usr/lib/jvm/java-6-openjdk/jre/bin/java'.
</pre>
<p> and <code>update-alternatives --display javac</code>: </p>
<pre class="example">javac - manual mode
  link currently points to /usr/lib/jvm/java-6-openjdk/bin/javac
/usr/bin/ecj - priority 143
  slave javac.1.gz: /usr/share/man/man1/ecj.1.gz
/usr/bin/gcj-wrapper-4.5 - priority 1045
/usr/bin/javac-harmony - priority 30
  slave javac.1.gz: /usr/share/man/man1/javac-harmony.1.gz
/usr/bin/javac-harmony-6.0 - priority 30
  slave javac.1.gz: /usr/share/man/man1/javac-harmony-6.0.1.gz
/usr/lib/jvm/java-1.5.0-sun/bin/javac - priority 53
  slave javac.1.gz: /usr/lib/jvm/java-1.5.0-sun/man/man1/javac.1.gz
/usr/lib/jvm/java-6-openjdk/bin/javac - priority 1061
  slave javac.1.gz: /usr/lib/jvm/java-6-openjdk/man/man1/javac.1.gz
/usr/lib/jvm/java-6-sun/bin/javac - priority 63
  slave javac.1.gz: /usr/lib/jvm/java-6-sun/man/man1/javac.1.gz
Current 'best' version is '/usr/lib/jvm/java-6-openjdk/bin/javac'.
</pre>
<p> What about more deatiled verson information? <code>/usr/bin/java-harmony -version</code> reports: </p>
<pre class="example">Apache Harmony Launcher : (c) Copyright 1991, 2010 The Apache Software Foundation or its licensors, as applicable.
java version "1.5.0"
Apache Harmony (1.5.0)
DRLVM (1.5.0-r991518)
pre-alpha : not complete or compatible
svn = r991518, (Sep  7 2010), Linux/ia32/gcc 4.3.2, release build

<a href="http://harmony.apache.org" rel="nofollow">http://harmony.apache.org</a>
</pre>
<p> and <code>/usr/bin/java-harmony-6.0 -version</code>: </p>
<pre class="example">Apache Harmony Launcher : (c) Copyright 1991, 2010 The Apache Software Foundation or its licensors, as applicable.
java version "1.6.0"
Apache Harmony (1.6.0)
DRLVM (1.6.0-r991881)
pre-alpha : not complete or compatible
svn = r991881, (Sep  8 2010), Linux/ia32/gcc 4.3.2, release build

<a href="http://harmony.apache.org" rel="nofollow">http://harmony.apache.org</a>
</pre></div>
</p></div>
<div id="outline-container-4" class="outline-4">
<h4 id="sec-4">Surprises</h4>
<div class="outline-text-4" id="text-4">
<ul>
<li id="sec-4_1">No alternatives for <code>java-harmony</code> nor <code>javac-harmony</code><br /> What is <a href="http://wiki.debian.org/DebianAlternatives">the Debian alternatives system</a>:<br />
<blockquote>
<p>The Debian alternatives system creates a way for several programs that fullfill the same or similar functions to be listed as alternative implementations that are installed simultaneously but with one particular implementation designated as the default.
</p>
</blockquote>
<p> It&#8217;s a minor issue, though. </p>
</li>
</ul>
<ul>
<li id="sec-4_2">Both Harmony 5 and 6 use the same Java compiler<br /> <code>/usr/bin/javac-harmony -version</code> and <code>/usr/bin/javac-harmony-6.0 -version</code> report exactly the same version of the compiler:<br />
<blockquote>
<p>Eclipse Java Compiler 0.972_R35x, 3.5.1 release, Copyright IBM Corp 2000, 2009. All rights reserved.
</p>
</blockquote>
<p> It seems to me as a quite serious issue, but what roadblocks to expect when cross-compiling and using different versions of compilers is a topic for another post. </p>
</li>
</ul></div>
</p></div>
<div id="outline-container-5" class="outline-4">
<h4 id="sec-5">Summary</h4>
<div class="outline-text-4" id="text-5">
<p>I don&#8217;t have enough time to play with, so there are not so much to say, except: <a href="http://harmony.apache.org/">Apache Harmony</a> installs, works in some cases, and may be uninstalled with ease. </p>
</div></div><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/manandbytes.wordpress.com/1183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/manandbytes.wordpress.com/1183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/manandbytes.wordpress.com/1183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/manandbytes.wordpress.com/1183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/manandbytes.wordpress.com/1183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/manandbytes.wordpress.com/1183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/manandbytes.wordpress.com/1183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/manandbytes.wordpress.com/1183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/manandbytes.wordpress.com/1183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/manandbytes.wordpress.com/1183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/manandbytes.wordpress.com/1183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/manandbytes.wordpress.com/1183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/manandbytes.wordpress.com/1183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/manandbytes.wordpress.com/1183/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=1183&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://manandbytes.wordpress.com/2011/04/17/installing-apache-harmony-on-debian/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/40825589ef2b8865a1a642098b0c64f8?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">manandbytes</media:title>
		</media:content>
	</item>
		<item>
		<title>How to emulate Jenkin&#8217;s &#8216;matrix build&#8217; in command line ad-hoc</title>
		<link>http://manandbytes.wordpress.com/2011/04/07/how-to-emulate-jenkins-matrix-build-in-command-line-ad-hoc/</link>
		<comments>http://manandbytes.wordpress.com/2011/04/07/how-to-emulate-jenkins-matrix-build-in-command-line-ad-hoc/#comments</comments>
		<pubDate>Thu, 07 Apr 2011 08:03:00 +0000</pubDate>
		<dc:creator>manandbytes</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jenkinsci]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://manandbytes.wordpress.com/?p=1026</guid>
		<description><![CDATA[Why? Jenkins presents a concept of the multi-configuration project (AKA matrix project). This feature is useful when you would like to test your application in several environments (with different versions of JDK) or package it for different platforms. But what if you can&#8217;t use Jenkins for some reason? Scriptable shell comes to the rescue and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=1026&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div id="outline-container-1" class="outline-3">
<h3 id="sec-1">Why?</h3>
<div class="outline-text-3" id="text-1">
<p>Jenkins presents a concept of <a href="http://www.google.com/search?q='matrix project' OR 'multi configuration project' 'continuous integration' jenkins">the multi-configuration project</a> (AKA matrix project). This feature is useful when you would like to test your application in several environments (with different versions of JDK) or package it for different platforms. </p>
<p> But what if you can&#8217;t use Jenkins for some reason? Scriptable shell comes to the rescue and here is a real-life example: I have to investigate an issue building a project in different environments (actually, for a combination of several versions of Maven2 and a number of different JDKs). </p>
</p></div>
</p></div>
<div id="outline-container-2" class="outline-3">
<h3 id="sec-2">How?</h3>
<div class="outline-text-3" id="text-2">
<p>So, I need two &laquo;axes&raquo; for my task: </p>
<ul>
<li>version of Maven2. There are only 4 versions to run my tests against   and I just enumerate all installations; </li>
<li>version of JDK. Thanks to a great package management system   available in Debian, I still have Sun&#8217;s Java5 JDK installed. Not as   a default one, however <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  And Sun&#8217;s JDK 6 alongside OpenJDK   6&hellip; And some other are installed and removed occasionally. So I   will just use <code>find</code> utility instead of enumerating all my JDK   installations. </li>
</ul></div>
</p></div>
<div id="outline-container-3" class="outline-3">
<h3 id="sec-3">Solution</h3>
<div class="outline-text-3" id="text-3">
<pre class="brush: plain; light: true;">
for m in \
    ~/bin/apache-maven-2.1.0/bin/ /usr/share/maven2/bin/ ~/bin/apache-maven-3.0.2/bin/ ~/bin/apache-maven-3.0-SNAPSHOT/bin/ ; do \
    for j in `find /usr/lib/jvm/ -maxdepth 2 -type d -name bin` ; do \
        echo &quot;-----&quot; ; \
        export JAVA_HOME=$j/../ ; \
        $m/mvn -version ; \
        $m/mvn clean compile --quiet ; \
    done \
done
</pre>
<p> Once executed, this runs given project using a) every version of Maven2 and b) for every Maven2 version using every JDK available. Output looks like: </p>
<pre class="example">-----
Apache Maven 2.1.0 (r755702; 2009-03-18 21:10:27+0200)
Java version: 1.6.0_22
Java home: /usr/lib/jvm/java-6-openjdk/jre
Default locale: uk_UA, platform encoding: UTF-8
OS name: "linux" version: "2.6.38-2-686-bigmem" arch: "i386" Family: "unix"
[ERROR] BUILD FAILURE
-----
Apache Maven 2.1.0 (r755702; 2009-03-18 21:10:27+0200)
Java version: 1.5.0_22
Java home: /usr/lib/jvm/java-1.5.0-sun-1.5.0.22/jre
Default locale: uk_UA, platform encoding: UTF-8
OS name: "linux" version: "2.6.38-2-686-bigmem" arch: "i386" Family: "unix"
[ERROR] BUILD FAILURE
-----
Apache Maven 2.1.0 (r755702; 2009-03-18 21:10:27+0200)
Java version: 1.6.0_24
Java home: /usr/lib/jvm/java-6-sun-1.6.0.24/jre
Default locale: uk_UA, platform encoding: UTF-8
OS name: "linux" version: "2.6.38-2-686-bigmem" arch: "i386" Family: "unix"
[ERROR] BUILD FAILURE
</pre>
<p> Mission accomplished. </p>
</div></div><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/manandbytes.wordpress.com/1026/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/manandbytes.wordpress.com/1026/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/manandbytes.wordpress.com/1026/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/manandbytes.wordpress.com/1026/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/manandbytes.wordpress.com/1026/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/manandbytes.wordpress.com/1026/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/manandbytes.wordpress.com/1026/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/manandbytes.wordpress.com/1026/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/manandbytes.wordpress.com/1026/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/manandbytes.wordpress.com/1026/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/manandbytes.wordpress.com/1026/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/manandbytes.wordpress.com/1026/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/manandbytes.wordpress.com/1026/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/manandbytes.wordpress.com/1026/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=1026&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://manandbytes.wordpress.com/2011/04/07/how-to-emulate-jenkins-matrix-build-in-command-line-ad-hoc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/40825589ef2b8865a1a642098b0c64f8?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">manandbytes</media:title>
		</media:content>
	</item>
		<item>
		<title>More on the fallacies of distributed networking</title>
		<link>http://manandbytes.wordpress.com/2011/03/22/more-on-the-fallacies-of-distributed-networking/</link>
		<comments>http://manandbytes.wordpress.com/2011/03/22/more-on-the-fallacies-of-distributed-networking/#comments</comments>
		<pubDate>Tue, 22 Mar 2011 16:57:00 +0000</pubDate>
		<dc:creator>manandbytes</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[networking]]></category>

		<guid isPermaLink="false">http://manandbytes.wordpress.com/?p=957</guid>
		<description><![CDATA[Fallacies of Distributed Computing Explained (PDF) by Arnon Rotem-Gal-Oz looks at each of these fallacies, explains them and checks their relevancy for distributed systems today. The Fallacies of Distributed Computing Reborn: The Cloud Era: The Fallacies of Distributed Computing applies directly to web applications, and is especially important when developing applications hosted in the cloud. [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=957&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.rgoarchitects.com/Files/fallacies.pdf">Fallacies of Distributed Computing Explained (PDF)</a> by Arnon   Rotem-Gal-Oz looks at each of these fallacies, explains them and   checks their relevancy for distributed systems today. </li>
<li><a href="http://blog.newrelic.com/2011/01/06/the-fallacies-of-distributed-computing-reborn-the-cloud-era/">The Fallacies of Distributed Computing Reborn: The Cloud Era</a>:<br />
<blockquote>
<p>The Fallacies of Distributed Computing applies directly to web applications, and is especially important when developing applications hosted in the cloud. Read on to see just how relevant they are today.
</p>
</blockquote>
</li>
<li><a href="http://blog.carbonfive.com/2010/11/17/fallacy-1-the-network-is-reliabl/">iPhone Distributed Computing Fallacy #1: the network is reliable</a> by   Carbon Five opens a series of articles how to avoid them when   developing Apple iOS applications:<br />
<blockquote>
<p>Let’s consider the 8 classic “fallacies of distributed computing” and how we can avoid them when writing iOS applications.
</p>
</blockquote>
</li>
</ul><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/manandbytes.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/manandbytes.wordpress.com/957/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/manandbytes.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/manandbytes.wordpress.com/957/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/manandbytes.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/manandbytes.wordpress.com/957/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/manandbytes.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/manandbytes.wordpress.com/957/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/manandbytes.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/manandbytes.wordpress.com/957/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/manandbytes.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/manandbytes.wordpress.com/957/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/manandbytes.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/manandbytes.wordpress.com/957/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=957&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://manandbytes.wordpress.com/2011/03/22/more-on-the-fallacies-of-distributed-networking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/40825589ef2b8865a1a642098b0c64f8?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">manandbytes</media:title>
		</media:content>
	</item>
		<item>
		<title>The Eight Fallacies of Distributed Computing are going to vanish</title>
		<link>http://manandbytes.wordpress.com/2011/03/19/the-eight-fallacies-of-distributed-computing-are-going-to-vanish/</link>
		<comments>http://manandbytes.wordpress.com/2011/03/19/the-eight-fallacies-of-distributed-computing-are-going-to-vanish/#comments</comments>
		<pubDate>Sat, 19 Mar 2011 07:51:00 +0000</pubDate>
		<dc:creator>manandbytes</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[sun]]></category>

		<guid isPermaLink="false">http://manandbytes.wordpress.com/?p=937</guid>
		<description><![CDATA[The http://www.sun.com site will be decommissioned on June 1 of this year. &#8230;according to OTN Garage, an official blog of the System Admin and Developer Community of the Oracle Technology Network. They promise that the content in blogs.sun.com will remain available. I&#8217;m not sure they will put redirects in place so that all the thousands [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=937&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote>
<p>The <a href="http://www.sun.com" rel="nofollow">http://www.sun.com</a> site will be decommissioned on June 1 of this year.
</p>
</blockquote>
<p> &hellip;<a href="http://blogs.sun.com/OTNGarage/entry/sun_com_will_disappear_after">according to OTN Garage</a>, an official blog of the System Admin and Developer Community of the Oracle Technology Network. <a href="http://blogs.sun.com/OTNGarage/entry/sun_com_will_disappear_after#comment-1299857120000">They promise</a> that the content in blogs.sun.com will remain available. I&#8217;m not sure they <a href="http://blogs.sun.com/OTNGarage/entry/sun_com_will_disappear_after#comment-1299864267000">will put redirects in place</a> so that all the thousands of links across the web to blogs.sun.com remain functional. Actually, <a href="http://blogs.sun.com/OTNGarage/entry/sun_com_will_disappear_after#comment-1299956445000">they wouldn&#8217;t</a> as straight redirects cost so much money and their <a href="http://blogs.sun.com/OTNGarage/entry/sun_com_will_disappear_after#comment-1299866092000">IT budget is tight</a>. More proof that Oracle <a href="http://blogs.sun.com/OTNGarage/entry/sun_com_will_disappear_after#comment-1299978123000">is only interested in</a> saving a few pennies a year. </p>
<p> Oracle willingly saying <a href="http://blogs.sun.com/OTNGarage/entry/sun_com_will_disappear_after#comment-1299956535000">&laquo;we don&#8217;t care&raquo;</a> about this history of work that exists in the sun.com domain and  <a href="http://blogs.sun.com/jag/resource/Fallacies.html">The Eight Fallacies of Distributed Computing</a> by Peter Deutsch is one of them: </p>
<blockquote>
<p>Essentially everyone, when they first build a distributed application,<br />
makes the following eight assumptions. All prove to be false in the<br />
long run and all cause big trouble and painful learning experiences.
</p>
<ul>
<li>The network is reliable
</li>
<li>Latency is zero
</li>
<li>Bandwidth is infinite
</li>
<li>The network is secure
</li>
<li>Topology doesn&#8217;t change
</li>
<li>There is one administrator
</li>
<li>Transport cost is zero
</li>
<li>The network is homogeneous
</li>
</ul>
</blockquote><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/manandbytes.wordpress.com/937/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/manandbytes.wordpress.com/937/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/manandbytes.wordpress.com/937/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/manandbytes.wordpress.com/937/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/manandbytes.wordpress.com/937/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/manandbytes.wordpress.com/937/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/manandbytes.wordpress.com/937/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/manandbytes.wordpress.com/937/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/manandbytes.wordpress.com/937/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/manandbytes.wordpress.com/937/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/manandbytes.wordpress.com/937/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/manandbytes.wordpress.com/937/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/manandbytes.wordpress.com/937/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/manandbytes.wordpress.com/937/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=937&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://manandbytes.wordpress.com/2011/03/19/the-eight-fallacies-of-distributed-computing-are-going-to-vanish/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/40825589ef2b8865a1a642098b0c64f8?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">manandbytes</media:title>
		</media:content>
	</item>
		<item>
		<title>Отношение к фреймворкам: профи против&#8230; не-профи</title>
		<link>http://manandbytes.wordpress.com/2011/03/12/all-frameworks-sucks/</link>
		<comments>http://manandbytes.wordpress.com/2011/03/12/all-frameworks-sucks/#comments</comments>
		<pubDate>Sat, 12 Mar 2011 09:07:42 +0000</pubDate>
		<dc:creator>manandbytes</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">https://manandbytes.wordpress.com/?p=912</guid>
		<description><![CDATA[Общеизвестно, что all frameworks sucks. Одни больше, другие&#8230; Или это зависит от персонального отношения? Например, Алексей Тутубалин в О Qt и рисовании прямоугольничков: Получается, все используемые типы объектов, которым это надо (штук пять) нужно сабклассить, переопределять в них один метод, добавлять еще парочку (get/setPainterCompositionMode), то бишь практически одинаковый код в пяти местах. По моему опыту [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=912&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Общеизвестно, что <a href="http://www.google.com/search?q=framework+sucks">all frameworks sucks</a>. Одни больше, другие&#8230; Или это зависит от персонального отношения?<br />
<a href="http://manandbytes.files.wordpress.com/2011/03/unique.jpg"><img src="http://manandbytes.files.wordpress.com/2011/03/unique.jpg?w=400&#038;h=300" alt="" title="unique" width="400" height="300" class="aligncenter size-full wp-image-926" /></a></p>
<p>Например,  Алексей Тутубалин в <a href="http://blog.lexa.ru/2011/03/10/o_qt_i_risovanii_pryamougolnichkov.html">О Qt и рисовании прямоугольничков</a>:</p>
<blockquote>
<p>Получается, все используемые типы объектов, которым это надо (штук пять) нужно сабклассить, переопределять в них один метод, добавлять еще парочку (get/setPainterCompositionMode), то бишь практически одинаковый код в пяти местах.</p>
<p>По моему опыту с Qt, это означает, <strong>что я что-то не заметил и это место уже должно быть украдено до</strong> меня&#8230;.. </p></blockquote><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/manandbytes.wordpress.com/912/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/manandbytes.wordpress.com/912/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/manandbytes.wordpress.com/912/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/manandbytes.wordpress.com/912/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/manandbytes.wordpress.com/912/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/manandbytes.wordpress.com/912/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/manandbytes.wordpress.com/912/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/manandbytes.wordpress.com/912/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/manandbytes.wordpress.com/912/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/manandbytes.wordpress.com/912/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/manandbytes.wordpress.com/912/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/manandbytes.wordpress.com/912/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/manandbytes.wordpress.com/912/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/manandbytes.wordpress.com/912/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=912&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://manandbytes.wordpress.com/2011/03/12/all-frameworks-sucks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/40825589ef2b8865a1a642098b0c64f8?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">manandbytes</media:title>
		</media:content>

		<media:content url="http://manandbytes.files.wordpress.com/2011/03/unique.jpg" medium="image">
			<media:title type="html">unique</media:title>
		</media:content>
	</item>
		<item>
		<title>Jenkins is alive!</title>
		<link>http://manandbytes.wordpress.com/2011/01/30/jenkins-is-alive/</link>
		<comments>http://manandbytes.wordpress.com/2011/01/30/jenkins-is-alive/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 11:58:22 +0000</pubDate>
		<dc:creator>manandbytes</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ci]]></category>
		<category><![CDATA[jenkinsci]]></category>

		<guid isPermaLink="false">http://manandbytes.wordpress.com/?p=813</guid>
		<description><![CDATA[There is no more Hudson logo in Jenkins since this Kohsuke&#8217;s commit. However, Hudson&#8217;s logo in SVG format is still there.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=813&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://manandbytes.files.wordpress.com/2011/01/hudson-jenkins.png"><img src="http://manandbytes.files.wordpress.com/2011/01/hudson-jenkins.png?w=264&#038;h=271" alt="" title="hudson-jenkins" width="264" height="271" class="alignleft size-full wp-image-816" /></a><br />
There is no more Hudson logo in Jenkins since <a href="https://github.com/jenkinsci/jenkins/commit/dc7e05a4c33f709e3cafd095b1789c0e37bfd4cd">this Kohsuke&#8217;s commit</a>. However, <a href="https://github.com/jenkinsci/jenkins/blob/master/war/src/main/webapp/images/title.svg">Hudson&#8217;s logo in SVG format</a> is still there.</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/manandbytes.wordpress.com/813/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/manandbytes.wordpress.com/813/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/manandbytes.wordpress.com/813/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/manandbytes.wordpress.com/813/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/manandbytes.wordpress.com/813/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/manandbytes.wordpress.com/813/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/manandbytes.wordpress.com/813/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/manandbytes.wordpress.com/813/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/manandbytes.wordpress.com/813/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/manandbytes.wordpress.com/813/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/manandbytes.wordpress.com/813/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/manandbytes.wordpress.com/813/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/manandbytes.wordpress.com/813/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/manandbytes.wordpress.com/813/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=813&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://manandbytes.wordpress.com/2011/01/30/jenkins-is-alive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/40825589ef2b8865a1a642098b0c64f8?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">manandbytes</media:title>
		</media:content>

		<media:content url="http://manandbytes.files.wordpress.com/2011/01/hudson-jenkins.png" medium="image">
			<media:title type="html">hudson-jenkins</media:title>
		</media:content>
	</item>
		<item>
		<title>Hudson is dead. Long live Jenkins!</title>
		<link>http://manandbytes.wordpress.com/2011/01/30/hudson-is-dead-long-live-jenkins/</link>
		<comments>http://manandbytes.wordpress.com/2011/01/30/hudson-is-dead-long-live-jenkins/#comments</comments>
		<pubDate>Sat, 29 Jan 2011 22:00:34 +0000</pubDate>
		<dc:creator>manandbytes</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ci]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[hudson]]></category>
		<category><![CDATA[jenkinsci]]></category>

		<guid isPermaLink="false">http://manandbytes.wordpress.com/?p=789</guid>
		<description><![CDATA[Who&#8217;s driving this thing? Community, I hope. Andrew Bayer just posted the vote results on renaming Hudson to Jenkins (more details). What does this mean for me personally? So what does this mean now? Well, it means Jenkins lives. Well, no more &#171;hudson&#187; in my vocabulary, not a big deal we will be renaming the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=789&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><a href="http://hudson-labs.org/content/whos-driving-thing">Who&#8217;s driving this thing?</a> Community, I hope. Andrew Bayer just posted <a href="https://groups.google.com/group/hudson-jenkins-vote">the  vote results</a> on renaming Hudson to Jenkins (<a href="http://www.hudson-labs.org/content/jenkins?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+ContinuousBlog+%28Hudson+Labs%29">more details</a>). What does this mean for me personally?</p>
<blockquote><p>So what does this mean now? Well, it means Jenkins lives.</p></blockquote>
<p>Well, no more &laquo;hudson&raquo; in my vocabulary, not a big deal <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<blockquote><p>we will be renaming the existing Google Groups</p></blockquote>
<p>Four mail filters should be updated in GMail, not a problem.</p>
<blockquote><p>and renaming our organization at Github from hudson to jenkinsci.</p></blockquote>
<p>Well, I&#8217;ve forked Hudson/Jenkins and some plugins <a href="https://github.com/manandbytes">on Github</a>. Will Github rename base repositories or have I drop and fork them again? For sure, I&#8217;m on my own with my local repositories, I have to change couple of <code>git remotes</code>.</p>
<p>Hudson is dead. Long live Jenkins!</p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/manandbytes.wordpress.com/789/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/manandbytes.wordpress.com/789/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/manandbytes.wordpress.com/789/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/manandbytes.wordpress.com/789/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/manandbytes.wordpress.com/789/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/manandbytes.wordpress.com/789/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/manandbytes.wordpress.com/789/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/manandbytes.wordpress.com/789/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/manandbytes.wordpress.com/789/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/manandbytes.wordpress.com/789/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/manandbytes.wordpress.com/789/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/manandbytes.wordpress.com/789/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/manandbytes.wordpress.com/789/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/manandbytes.wordpress.com/789/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=manandbytes.wordpress.com&amp;blog=90178&amp;post=789&amp;subd=manandbytes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://manandbytes.wordpress.com/2011/01/30/hudson-is-dead-long-live-jenkins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/40825589ef2b8865a1a642098b0c64f8?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">manandbytes</media:title>
		</media:content>
	</item>
	</channel>
</rss>
