<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Just Java &#187; Maven</title>
	<atom:link href="http://blog.cedarsoft.com/tag/maven/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.cedarsoft.com</link>
	<description>Johannes Schneider (cedarsoft GmbH) about Java and related stuff</description>
	<lastBuildDate>Wed, 25 Aug 2010 09:46:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>[Maven + Git] Releasing and Branching done right&#8230;</title>
		<link>http://blog.cedarsoft.com/2010/08/maven-git-relasing-and-branching-done-right/</link>
		<comments>http://blog.cedarsoft.com/2010/08/maven-git-relasing-and-branching-done-right/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 21:02:47 +0000</pubDate>
		<dc:creator>johannes</dc:creator>
				<category><![CDATA[Maven]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[scm]]></category>
		<category><![CDATA[vcs]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://blog.cedarsoft.com/?p=407</guid>
		<description><![CDATA[Maven is really awful. I hate it.
But it is by far the best tool available&#8230; Therefore I am using it for several years now. And since it is a tool one has to struggle with, I have invested a lot of time into optimizing my build environment. So I know Maven quite well now &#8211; ]]></description>
			<content:encoded><![CDATA[<p>Maven is really awful. I hate it.</p>
<p>But it is by far the best tool available&#8230; Therefore I am using it for several years now. And since it is a tool one has to struggle with, I have invested a lot of time into optimizing my build environment. So I know Maven quite well now &#8211; better than I wanted&#8230;</p>
<p>And of course I am using Git. And I really love it. But unfortunately Git is just a second class citizen in Maven land. The basic things work, but other things don&#8217;t (like <a href="http://jira.codehaus.org/browse/MRELEASE-579">mvn release:branch</a>).</p>
<p>I have created this checklist for doing a release. Just take a look and compare it with the steps you are doing. I&#8217;d like to hear some opinions and ideas for improvements.</p>
<h3>Small scripts</h3>
<p>I use some scripts that make my life easier:</p>
<ul>
<li><a href="http://git-wt-commit.rubyforge.org/git-publish-branch">git-publish-branch</a></li>
</ul>
<h1>The setup</h1>
<h3>The version numbers</h3>
<p>The upcoming release will be 1.0.0 (the first release for this project). Therefore no maintenance branches exist yet.</p>
<p>Currently the master branch is set to 1.0.0-SNAPSHOT.</p>
<h3>The branches</h3>
<table>
<thead>
<tr>
<th>Branch</th>
<th>Description</th>
</tr>
</thead>
<tr>
<td>master</td>
<td>Contains the current development version (that will be released as next major release).</p>
<p>(I have an additional <em>pu</em> branch that is merged to master automatically when all tests have been run successfully, but that doesn&#8217;t matter for this entry)
</td>
</tr>
<tr>
<td>next</td>
<td>Contains some experimental code (that will be merged to master one day)</td>
</tr>
<tr>
<td>maint-[VERSION]</td>
<td>Maintenance branches for every version. Just bugfixes are commited here and merged up.</td>
</tr>
</table>
<h1>Release: What has to be done</h1>
<p>The master branch contains the latest peace of software that shall be released (that means that all bugfixes have been merged in from the maint* branches).</p>
<ul>
<li>Tag for the release</li>
<li>Creating a new maint-* branch with updated version number</li>
<li>Updating the version number for master</li>
<li>Probably updated the version number for next, too</li>
</ul>
<p>And: Of course release one version of our software&#8230;</p>
<h1>The Checklist</h1>
<h3>1: Ensure all bugfixes have been merged into master</h3>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">git</span> log master..maint-<span style="color: #7a0874; font-weight: bold;">&#91;</span>VERSION<span style="color: #7a0874; font-weight: bold;">&#93;</span></div></td></tr></tbody></table></div>
<h3>2: Creating the maint-branch</h3>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">git</span> checkout master<br />
<span style="color: #c20cb9; font-weight: bold;">git</span> checkout <span style="color: #660033;">-b</span> maint-1.0.0<br />
<span style="color: #c20cb9; font-weight: bold;">git</span> publish-branch</div></td></tr></tbody></table></div>
<h3>3: Releasing on maint</h3>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mvn release:prepare<br />
mvn release:perform</div></td></tr></tbody></table></div>
<h3>4: Merging maint to master</h3>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">git</span> checkout master<br />
<span style="color: #c20cb9; font-weight: bold;">git</span> merge maint-1.0.0</div></td></tr></tbody></table></div>
<h3>5: Updating the version on master</h3>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mvn versions:<span style="color: #000000; font-weight: bold;">set</span> <span style="color: #660033;">-DnewVersion</span>=1.1.0-SNAPSHOT <span style="color: #660033;">-DgenerateBackupPoms</span>=<span style="color: #c20cb9; font-weight: bold;">false</span><br />
<span style="color: #c20cb9; font-weight: bold;">git</span> commit <span style="color: #660033;">-a</span> <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;preparing for next major release: updated version in master&quot;</span></div></td></tr></tbody></table></div>
<h3>6: Merging master to next</h3>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">git</span> checkout next<br />
<span style="color: #c20cb9; font-weight: bold;">git</span> merge master</div></td></tr></tbody></table></div>
<p>That merge has probably one merge conflict: The version in the pom.xml. Just keep the value of the next branch.</p>
<h3>7: Updating the version for next (optional/if necessary)</h3>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">mvn versions:<span style="color: #000000; font-weight: bold;">set</span> <span style="color: #660033;">-DnewVersion</span>=2.0.0-SNAPSHOT <span style="color: #660033;">-DgenerateBackupPoms</span>=<span style="color: #c20cb9; font-weight: bold;">false</span><br />
<span style="color: #c20cb9; font-weight: bold;">git</span> commit <span style="color: #660033;">-a</span> <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;preparing release: updated version in next&quot;</span></div></td></tr></tbody></table></div>
<h3>8: Pushing the changes</h3>
<div class="codecolorer-container bash default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">git</span> push</div></td></tr></tbody></table></div>
<h2>The result</h2>
<p>Now there are three branches with different version numbers:</p>
<table>
<thead>
<tr>
<th>Branch</th>
<th>Version</th>
</tr>
</thead>
<tr>
<td>maint-1.0.0</td>
<td>1.0.1-SNAPSHOT</td>
</tr>
<tr>
<td>master</td>
<td>1.1.0-SNAPSHOT</td>
</tr>
<tr>
<td>next</td>
<td>2.0.0-SNAPSHOT</td>
</tr>
</table>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://blog.cedarsoft.com/2010/07/javafx2java-bridge-added-to-jfxtras-step-2/" rel="bookmark" class="crp_title">JavaFX2Java Bridge added to JFXtras (step 2)</a></li><li><a href="http://blog.cedarsoft.com/2010/01/top-10-why-subversion-is-better-than-git/" rel="bookmark" class="crp_title">Top 10: Why Subversion is better than Git</a></li><li><a href="http://blog.cedarsoft.com/2010/07/maven-fixing-table-bug-for-site-plugin-2-1/" rel="bookmark" class="crp_title">Maven: Fixing table bug for site plugin 2.1</a></li><li><a href="http://blog.cedarsoft.com/2009/12/cedarsoft-serialization-1-0-0-beta1-released/" rel="bookmark" class="crp_title">cedarsoft Serialization 1.0.0-beta1 released</a></li><li><a href="http://blog.cedarsoft.com/2010/01/cedarsoft-serialization-1-0-0-released/" rel="bookmark" class="crp_title">cedarsoft Serialization 1.0.0 released</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://blog.cedarsoft.com/2010/08/maven-git-relasing-and-branching-done-right/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Maven: Fixing table bug for site plugin 2.1</title>
		<link>http://blog.cedarsoft.com/2010/07/maven-fixing-table-bug-for-site-plugin-2-1/</link>
		<comments>http://blog.cedarsoft.com/2010/07/maven-fixing-table-bug-for-site-plugin-2-1/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 14:56:35 +0000</pubDate>
		<dc:creator>johannes</dc:creator>
				<category><![CDATA[Maven]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://blog.cedarsoft.com/?p=372</guid>
		<description><![CDATA[Some time ago a new big release for the site plugin has been done.
Unfortunately they have introduced a small bug:
The table tags now contain the alignment attribute set to &#8220;left&#8221;.
This results to some strange bugs. Take a look at that page:
http://fest.easytesting.org/javafx/maven/compile-mojo.html

Look at the background of the table.  The following h3 gets resized and its ]]></description>
			<content:encoded><![CDATA[<p>Some time ago a new big release for the site plugin has been done.<br />
Unfortunately they have introduced a small bug:</p>
<p>The table tags now contain the alignment attribute set to &#8220;left&#8221;.</p>
<p>This results to some strange bugs. Take a look at that page:<br />
<a href="http://fest.easytesting.org/javafx/maven/compile-mojo.html">http://fest.easytesting.org/javafx/maven/compile-mojo.html</a></p>
<p><a href="http://blog.cedarsoft.com/wp-uploads/2010/07/Screenshot-Maven-JavaFX-Compiler-Plugin-javafxccompile-Mozilla-Firefox.png"><img src="http://blog.cedarsoft.com/wp-uploads/2010/07/Screenshot-Maven-JavaFX-Compiler-Plugin-javafxccompile-Mozilla-Firefox-300x81.png" alt="Table Bug in maven-site-plugin:2.1" title="Table Bug in maven-site-plugin:2.1" width="300" height="81" class="alignnone size-medium wp-image-375" /></a></p>
<p>Look at the background of the table.  The following h3 gets resized and its background is drawn behind the table&#8230;</p>
<p>To fix it, just add those lines to the CSS:</p>
<div class="codecolorer-container css default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="css codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">table <span style="color: #00AA00;">&#123;</span><br />
&nbsp; <span style="color: #000000; font-weight: bold;">float</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">none</span><span style="color: #00AA00;">;</span><br />
<span style="color: #00AA00;">&#125;</span></div></td></tr></tbody></table></div>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://blog.cedarsoft.com/2010/08/maven-git-relasing-and-branching-done-right/" rel="bookmark" class="crp_title">[Maven + Git] Releasing and Branching done right&#8230;</a></li><li><a href="http://blog.cedarsoft.com/2010/04/javafx-about-bounds/" rel="bookmark" class="crp_title">JavaFX: Bounds by example</a></li><li><a href="http://blog.cedarsoft.com/2010/04/new-javafx-default-font-amble-condensed/" rel="bookmark" class="crp_title">New JavaFX default font (Amble Condensed) looks ugly!</a></li><li><a href="http://blog.cedarsoft.com/2010/04/javafx-custom-controls-in-1-3/" rel="bookmark" class="crp_title">JavaFX: Custom controls in 1.3</a></li><li><a href="http://blog.cedarsoft.com/2007/09/splitting-up-your-pom-xml-into-multiple-files/" rel="bookmark" class="crp_title">Splitting up your pom.xml into multiple files</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://blog.cedarsoft.com/2010/07/maven-fixing-table-bug-for-site-plugin-2-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Splitting up your pom.xml into multiple files</title>
		<link>http://blog.cedarsoft.com/2007/09/splitting-up-your-pom-xml-into-multiple-files/</link>
		<comments>http://blog.cedarsoft.com/2007/09/splitting-up-your-pom-xml-into-multiple-files/#comments</comments>
		<pubDate>Mon, 10 Sep 2007 22:35:00 +0000</pubDate>
		<dc:creator>johannes</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Maven]]></category>

		<guid isPermaLink="false">http://blog.cedarsoft.com/?p=3</guid>
		<description><![CDATA[Ever had to deal with a really, really huge pom.xml? As soon as you start not only to declare the dependencies but also to add informations about the distribution (repositories, site), mailinglists or developers, the pom.xml starts to become really huge.
It is hard to find the informations you search. And it is much harder to ]]></description>
			<content:encoded><![CDATA[<p>Ever had to deal with a really, really huge pom.xml? As soon as you start not only to declare the dependencies but also to add informations about the distribution (repositories, site), mailinglists or developers, the pom.xml starts to become really huge.</p>
<p>It is hard to find the informations you search. And it is much harder to find that revision a dependecy has changed if there is so much noise due to changes in other sections.<br />
Many applications with huge configuration files started to convert their files into directories over the last years. Apache now has its &#8220;conf.d&#8221; directory, crontab uses &#8220;cron.d&#8221; and so on.</p>
<p>Why not take the same step, too? Why not split up the pom.xml into several files that are placed within a directory called &#8220;pom.d&#8221;?<br />
So I have created a <a title=" Optional support for splitting up pom.xml in multiple files" href="http://docs.codehaus.org/display/MAVENUSER/Optional+support+for+splitting+up+pom.xml+in+multiple+files" target="_blank">proposal for Maven 2.1</a>.</p>
<p>What do you think?</p>
<div id="crp_related"><h3>Related Posts:</h3><ul><li><a href="http://blog.cedarsoft.com/2007/09/java-image-manipulation-tutorial/" rel="bookmark" class="crp_title">Java Image manipulation tutorial</a></li><li><a href="http://blog.cedarsoft.com/2010/08/code-generation-done-right/" rel="bookmark" class="crp_title">Code Generation done right&#8230;</a></li><li><a href="http://blog.cedarsoft.com/2009/12/whats-wrong-with-xstream-and-similar-tools/" rel="bookmark" class="crp_title">What&#8217;s wrong with XStream and similar tools?</a></li><li><a href="http://blog.cedarsoft.com/2010/01/top-10-why-subversion-is-better-than-git/" rel="bookmark" class="crp_title">Top 10: Why Subversion is better than Git</a></li><li><a href="http://blog.cedarsoft.com/2010/08/junit-rules/" rel="bookmark" class="crp_title">JUnit: Rules</a></li></ul></div>]]></content:encoded>
			<wfw:commentRss>http://blog.cedarsoft.com/2007/09/splitting-up-your-pom-xml-into-multiple-files/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
