<?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>Don't Forget to Plant It!</title>
	<atom:link href="http://blog.codeeg.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.codeeg.com</link>
	<description></description>
	<lastBuildDate>Thu, 25 Jun 2009 23:38:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Problems Uploading Files to WordPress?</title>
		<link>http://blog.codeeg.com/2009/06/25/having-problems-uploading-files-to-wordpress/</link>
		<comments>http://blog.codeeg.com/2009/06/25/having-problems-uploading-files-to-wordpress/#comments</comments>
		<pubDate>Thu, 25 Jun 2009 23:38:06 +0000</pubDate>
		<dc:creator>Calvin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[File Uploads]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.codeeg.com/?p=252</guid>
		<description><![CDATA[A Google search seems to indicate that problems uploading files on WordPress installs is a pretty common occurrence.  Unfortunately, I had the hardest time finding the solution to my particular ailment.  Hopefully, this post will find those others who run into this problem in the future.
From the WP Admin pages, go to Settings &#62; Miscellaneous.  [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>A Google search seems to indicate that problems uploading files on WordPress installs is a pretty common occurrence.  Unfortunately, I had the hardest time finding the solution to my particular ailment.  Hopefully, this post will find those others who run into this problem in the future.</p>
<p>From the WP Admin pages, go to <strong>Settings &gt; Miscellaneous</strong>.  Make sure the value for &#8216;Store uploads in this folder&#8217; is where you want your files stored (in most cases, it should be <em>wp-content/uploads</em>).</p>
<p style="text-align: center;"><a href="http://blog.codeeg.com/wp-content/uploads/2009/06/Miscellaneous-Settings-‹-Don’t-Forget-to-Plant-It-—-WordPress.jpg"><img class="aligncenter size-medium wp-image-253" title="Miscellaneous Settings ‹ Don’t Forget to Plant It! — WordPress" src="http://blog.codeeg.com/wp-content/uploads/2009/06/Miscellaneous-Settings-‹-Don’t-Forget-to-Plant-It-—-WordPress-300x117.jpg" alt="Miscellaneous Settings ‹ Don’t Forget to Plant It! — WordPress" width="300" height="117" /></a></p>
<p>In my case, this was pointing to a folder I was using for a WP install I was using to test the Thesis theme I&#8217;m using now.  Reverting it to the default fixed my problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codeeg.com/2009/06/25/having-problems-uploading-files-to-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating Static Pages w/ Rails ActionViews</title>
		<link>http://blog.codeeg.com/2009/05/24/creating-static-pages-w-rails-actionviews/</link>
		<comments>http://blog.codeeg.com/2009/05/24/creating-static-pages-w-rails-actionviews/#comments</comments>
		<pubDate>Mon, 25 May 2009 01:25:18 +0000</pubDate>
		<dc:creator>Calvin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[skribit]]></category>
		<category><![CDATA[Static Pages]]></category>

		<guid isPermaLink="false">http://blog.codeeg.com/?p=221</guid>
		<description><![CDATA[Recently, I needed to create some static reporting pages for Skribit.  From a quick search, I got a lot of results that talk about Rails and static pages, but none did exactly what I needed:

To be able to generate pages with different paths from one URL
Pages to persist across Rails deployments

Not seeing any solutions that [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Recently, I needed to create some static reporting pages for Skribit.  From a quick search, I got a lot of results that talk about Rails and static pages, but none did exactly what I needed:</p>
<ol>
<li>To be able to generate pages with different paths from one URL</li>
<li>Pages to persist across Rails deployments</li>
</ol>
<p>Not seeing any solutions that fit my needs, I set out to come up with my own.  Here is what I ended up with.</p>
<p>First, I needed to add a route for generating/displaying the reports:</p>
<script src="http://gist.github.com/117205.js"></script>
<p>From here, I could just use the standard <strong>caches_page :show</strong> declaration, but that would only generate the page I wanted if I used <em>/report/2009/05/25 </em>as the URL.  What if I wanted <em>/report</em> to generate the report for the current week?  Well, you can do something like this:</p>
<script src="http://gist.github.com/117328.js"></script>
<p>The magic is in the <strong>after_filter</strong> method <strong>cache_weekly_report</strong>.  We basically use the same mechanism Rails page caching uses to save our new report page.  Now, calling <em>/report</em> will generate a static report at <em>/report/2009/05/25</em>, or whatever the current day is.</p>
<p>The last thing to do is to make sure that the reports persist through new server deployments.  That can easily be done with a symlink in your capistrano script:</p>
<script src="http://gist.github.com/117331.js"></script>
<p>And that&#8217;s it!  What do you think?  I&#8217;d love to know if there are any simpler solutions to this.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codeeg.com/2009/05/24/creating-static-pages-w-rails-actionviews/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building Software to their Audiences</title>
		<link>http://blog.codeeg.com/2009/02/24/building-software-to-their-audiences/</link>
		<comments>http://blog.codeeg.com/2009/02/24/building-software-to-their-audiences/#comments</comments>
		<pubDate>Tue, 24 Feb 2009 10:35:03 +0000</pubDate>
		<dc:creator>Calvin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[audience]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[software design]]></category>

		<guid isPermaLink="false">http://blog.codeeg.com/?p=201</guid>
		<description><![CDATA[When building software, it&#8217;s a good idea to identify the needs of 3 different kinds of audiences.
The first 2 kinds are obvious ones.  We know to listen to what our End Users ask for, but not necessarily build everything they ask.  And we want to balance what the Business wants with when they want it.
The [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>When building software, it&#8217;s a good idea to identify the needs of 3 different kinds of audiences.</p>
<p>The first 2 kinds are obvious ones.  We know to listen to what our End Users ask for, but not necessarily build everything they ask.  And we want to balance what the Business wants with when they want it.</p>
<p>The last audience, the fellow Developer, is often forgotten.  This means writing clear and concise code.  This also means identifying the common maintenance points in your software and making it easy to work with.</p>
<p>And this also means factoring into the design the capabilities of the development team.  Just like it is unacceptable to write bad code, it should be just as unacceptable to over design software beyond the hiring practices of the company you work for.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codeeg.com/2009/02/24/building-software-to-their-audiences/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Turning a New Page</title>
		<link>http://blog.codeeg.com/2008/11/15/turning-a-new-page/</link>
		<comments>http://blog.codeeg.com/2008/11/15/turning-a-new-page/#comments</comments>
		<pubDate>Sat, 15 Nov 2008 16:36:03 +0000</pubDate>
		<dc:creator>Calvin</dc:creator>
				<category><![CDATA[Personal]]></category>

		<guid isPermaLink="false">http://blog.codeeg.com/?p=192</guid>
		<description><![CDATA[It&#8217;s been a month now since I left my contract at AutoTrader.com.  For the most part, I&#8217;ve enjoyed my time there, but the thought of celebrating my two year anniversary there was a little frightening.  While I am very adaptable to the corporate life, it isn&#8217;t for me.  When FlickStation (the last startup I was [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>It&#8217;s been a month now since I left my contract at AutoTrader.com.  For the most part, I&#8217;ve enjoyed my time there, but the thought of celebrating my two year anniversary there was a little frightening.  While I am very adaptable to the corporate life, it isn&#8217;t for me.  When FlickStation (the last startup I was a part of) desolved, the plan was to serve a year of corporate duty to get my bearings before heading back into the startup arena.  But some interesting work, interesting politics, and great co-workers kept me there longer than I expected.  But ultimately, I&#8217;m addicted to execution and delivery, both of which seem very hard to do well and often in large companies.</p>
<p>Also, for people with entrepreneurial aspirations, the corporate world has a way of slowly draining it from you, replacing it with contentedness.  And when you&#8217;re building your startup, those aspirations provides the fuel for you to push on.  I was worried that one day I wake up and find it all gone.</p>
<p>I&#8217;m now spending my time at Good Egg Studios, where we just now wrapped up our second week in private beta of <a title="Elf Island" href="http://elfisland.com">Elf Island</a>.  Working here has been like a breathe of fresh air.  The technology is familiar and not so familiar at the same time, and I&#8217;m working with some great people (including <a href="http://atlanta.startupweekend.com">Startup Weekend</a> alums <a title="Rob Kischuk" href="http://blog.kischuk.com/">Rob</a> and <a title="Amro Mousa - iPhone Developer :)" href="http://amromousa.com">Amro</a>) and leadership with great character.  As an added bonus, my commute is a lot shorter now, and also I&#8217;m much closer to <a title="Skribit - Blog Suggestion Application" href="http://skribit.com">Skribit</a>.</p>
<p>Oh, and did I mention I was working on a game!  A fscking game!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codeeg.com/2008/11/15/turning-a-new-page/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Growl Notifications for Ant</title>
		<link>http://blog.codeeg.com/2008/10/18/growl-notifications-for-ant/</link>
		<comments>http://blog.codeeg.com/2008/10/18/growl-notifications-for-ant/#comments</comments>
		<pubDate>Sat, 18 Oct 2008 13:29:33 +0000</pubDate>
		<dc:creator>Calvin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[Growl]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Mac]]></category>

		<guid isPermaLink="false">http://blog.codeeg.com/?p=187</guid>
		<description><![CDATA[It&#8217;s a real refreshing change to be doing developing on Mac these days.  Currently, our Ant builds at work are less than optimal, taking ten&#8217;s of minutes to do a full build.  Fixing it is something we definitely want to do, but because of the complexity of the build and existing deadlines, right now isn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>It&#8217;s a real refreshing change to be doing developing on Mac these days.  Currently, our Ant builds at work are less than optimal, taking ten&#8217;s of minutes to do a full build.  Fixing it is something we definitely want to do, but because of the complexity of the build and existing deadlines, right now isn&#8217;t the best time.  So instead of constantly checking on the progress of my build, I installed this <a href="http://blog.slimeslurp.net/2007/03/18/ant-build-notifications-via-growl/">Growl Ant build listener</a> which will display a Growl notification when a build has completed.</p>
<p>The <a href="http://code.google.com/p/growlbuildlistener/wiki/README">README</a> for the listener got me started &#8211; the only thing that didn&#8217;t work for me is setting the build listener using the <em>ANT_OPT</em> environment variable.  It looks like the default install of Ant on Leopard uses that environment variable as arguments to pass to the Java VM.  So instead, I just used an alias:</p>
<p><code>
<pre>
alias ant='ant -listener net.slimeslurp.growl.GrowlListener'
</pre>
<p></code></p>
<p>Just add this line to your <em>~/.bash_login</em> to use the build listener every time you build.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codeeg.com/2008/10/18/growl-notifications-for-ant/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Moving Off WP.com</title>
		<link>http://blog.codeeg.com/2008/10/07/moving-off-wpcom/</link>
		<comments>http://blog.codeeg.com/2008/10/07/moving-off-wpcom/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 02:44:08 +0000</pubDate>
		<dc:creator>Calvin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.codeeg.com/?p=178</guid>
		<description><![CDATA[So after three months of WP.com, I&#8217;ve decided to move back to my own hosted WordPress blog.  One reason for the move was so that I can beta test our Skribit widget, which can now be easily styled to blend perfectly to your site.  Please give it a shot, and shoot us any feedback.  Right [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>So after three months of WP.com, I&#8217;ve decided to move back to my own hosted WordPress blog.  One reason for the move was so that I can beta test our <a href="http://skribit.com">Skribit</a> widget, which can now be easily styled to blend perfectly to your site.  Please give it a shot, and shoot us any feedback.  Right now, this is a one off install, but I&#8217;m starting to put things together so that we can roll this new widget out to more testers.</p>
<p>Also, I felt that by moving to WP.com my blog got sort of bleh.  I had to use from one of the provided themes, and was limited in the plugins and widgets I was able to use.  It&#8217;s not like it was anything special before, but at least it wasn&#8217;t special by my choosing.  So, I&#8217;m on my own again, using the WP Subversion installation that <a href="http://paulstamatiou.com">Paul</a> recommended.  I also bought this <a title="Thesis WordPress theme" href="http://diythemes.com/thesis/">wicket cool theme</a> that is very well done and supported.  Now, I need to get some cool plugins &#8211; any recommendations?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codeeg.com/2008/10/07/moving-off-wpcom/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Running FiveRuns TuneUp in a Separate Environment</title>
		<link>http://blog.codeeg.com/2008/10/05/running-fiveruns-tuneup-in-a-separate-environment/</link>
		<comments>http://blog.codeeg.com/2008/10/05/running-fiveruns-tuneup-in-a-separate-environment/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 01:23:24 +0000</pubDate>
		<dc:creator>Calvin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[FiveRuns TuneUp]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[Profiling]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://blog2.codeeg.com/?p=168</guid>
		<description><![CDATA[FiveRuns&#8217; TuneUp is a great tool for profiling your Rails app, but by default it is always running in development.  This causes two issues 1) every request is slower in development as it is always collecting profiling data, and 2) the TuneUp bar can mess with the layout of your application, especially if you&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://www.fiveruns.com/products/tuneup">FiveRuns&#8217; TuneUp</a> is a great tool for profiling your Rails app, but by default it is always running in development.  This causes two issues 1) every request is slower in development as it is always collecting profiling data, and 2) the TuneUp bar can mess with the layout of your application, especially if you&#8217;re rendering content in iframes like we do with <a href="http://skribit.com">Skribit</a>.  So instead of having TuneUp always run in development mode, I&#8217;ve changed it to run only when the server is started in a new environment called &#8216;profiler&#8217;.   Here&#8217;s how I did it.</p>
<p>First, you need to tell TuneUp to only run in the profiler environment.  You do this by modifying <em>config/tuneup.rb</em> (create this file if it doesn&#8217;t already exist):</p>
<pre><code>Fiveruns::Tuneup.config do |config|
  config.environments.delete('development')
  config.environments &lt;&lt; 'profiler'
end</code></pre>
<p>Next, copy the development configuration block in <em>config/database.yml</em> and create a new block called <em>profiler</em>:</p>
<pre><code>profiler:
  adapter: mysql
  encoding: utf8
  database: YOUR_DATABASE
  username: YOUR_USERNAME
  password: YOUR_PASSWORD
  socket: /tmp/mysql.sock
</code></pre>
<p>Finally, create your profiler environment configs by copying your development configs:</p>
<pre><code>cp config/environments/development.rb config/environments/profiler.rb</code></pre>
<p>You&#8217;re all set!  Now, to run the server with TuneUp on, just run the server in the <em>profiler</em> environment:</p>
<pre><code>script/server -e profiler</code</pre>
<p>Now, I have TuneUp available to me only when I'm looking to optimize performance.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codeeg.com/2008/10/05/running-fiveruns-tuneup-in-a-separate-environment/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Aptana Goes into the Clouds</title>
		<link>http://blog.codeeg.com/2008/09/07/aptana-goes-into-the-clouds/</link>
		<comments>http://blog.codeeg.com/2008/09/07/aptana-goes-into-the-clouds/#comments</comments>
		<pubDate>Sun, 07 Sep 2008 13:53:35 +0000</pubDate>
		<dc:creator>Calvin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[aptana]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[radrails]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://dontforgettoplantit.wordpress.com/?p=161</guid>
		<description><![CDATA[I use Aptana for RoR development.  Not because it&#8217;s a good Ruby or Rails IDE, but because I do so much Java at my paying job and switching between Java development on Eclipse to RoR development on Aptana is a breeze.  Today, I was checking out Aptana&#8217;s website for updates when I noticed that they [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I use <a title="Aptana Website" href="http://www.aptana.com">Aptana</a> for RoR development.  Not because it&#8217;s a good Ruby or Rails IDE, but because I do so much Java at my paying job and switching between Java development on Eclipse to RoR development on Aptana is a breeze.  Today, I was checking out Aptana&#8217;s website for updates when I noticed that they now have a product called <a href="http://www.aptana.com/cloud">Aptana Cloud</a>.</p>
<p>Aptana Cloud appears to be a integrated deployment/hosting platform for Aptana.  You can write applications in PHP, Jaxer (Aptana&#8217;s AJAX framework), and Ruby on Rails (coming soon), and deploy them to a cloud with a push of a button.  Right now, it deploys to Joyent&#8217;s Cloud, but it appears that the intention is to be provider agnostic, which would be key for adoption.</p>
<p>I&#8217;m very interested in trying this out, though I&#8217;m going to wait until RoR support is ready.  Hopefully, this will lead to some standards to cloud computing, making it easier to switch from one provider to another.  No doubt this is where lightweight development frameworks should be going (looking at you Appcelerator).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codeeg.com/2008/09/07/aptana-goes-into-the-clouds/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Problems With Rails Fixture Labels?</title>
		<link>http://blog.codeeg.com/2008/07/13/problems-with-rails-fixture-labels/</link>
		<comments>http://blog.codeeg.com/2008/07/13/problems-with-rails-fixture-labels/#comments</comments>
		<pubDate>Sun, 13 Jul 2008 20:33:37 +0000</pubDate>
		<dc:creator>Calvin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[fixtures]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://dontforgettoplantit.wordpress.com/?p=149</guid>
		<description><![CDATA[Newer versions of Rails has a nice feature where you can use label references for fixtures.  So instead of:
# posts.yml
test_post:
  user_id: 1
  title: My Test Post

You can do this:
test_post:
  user: quentin
  title: My Test Post

However, if your model class name is in a pluralized form, you might find that label [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Newer versions of Rails has a nice feature where you can use label references for fixtures.  So instead of:</p>
<pre><code># posts.yml
test_post:
  user_id: 1
  title: My Test Post
</code></pre>
<p>You can do this:</p>
<pre><code>test_post:
  user: quentin
  title: My Test Post
</code></pre>
<p>However, if your model class name is in a pluralized form, you might find that label references won&#8217;t work.  That&#8217;s because fixtures derive their class name from the singular form of the table name by default.  Fortunately, you can fix this by adding this line to your TestHelper:</p>
<pre><code>class Test::Unit::TestCase

  # Explicitly map the table name to class name
  set_fixture_class :accounts =&gt; 'accounts'
end
</code></pre>
<p>Hopefully, this will save someone else from having to dig through the Rails fixtures internals.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codeeg.com/2008/07/13/problems-with-rails-fixture-labels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>25 Things I Hate about Maven</title>
		<link>http://blog.codeeg.com/2008/06/28/25-things-i-hate-about-maven/</link>
		<comments>http://blog.codeeg.com/2008/06/28/25-things-i-hate-about-maven/#comments</comments>
		<pubDate>Sat, 28 Jun 2008 15:51:10 +0000</pubDate>
		<dc:creator>Calvin</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[ant]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://dontforgettoplantit.wordpress.com/?p=148</guid>
		<description><![CDATA[I&#8217;ve been doing a lot of work with Maven recently, and having a miserable time of it.  Earlier this week I was ranting about it on a mailing list I was on, when I thought it would be therapeutic to try to list 100 things that irks me about Maven 2 that I&#8217;ve personally ran [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I&#8217;ve been doing a lot of work with Maven recently, and having a miserable time of it.  Earlier this week I was ranting about it on a mailing list I was on, when I thought it would be therapeutic to try to list 100 things that irks me about Maven 2 that I&#8217;ve personally ran into.  So, I didn&#8217;t come close &#8211; I only came up with 25.  But I do feel much better now.</p>
<p>Here goes, in no particular order:</p>
<ol>
<li>The Maven AntRun tasks allows you run ant from within Maven, but you have very limited access to the POM.</li>
<li>If you have a multi-module project configuration, changing the version of the root project requires you to change all the versions of the sub-modules</li>
<li>Maven Ant Tasks doesn&#8217;t resolve transitive dependencies exactly the same as a regular Maven project does.</li>
<li>Maven manages adding all the dependencies you need&#8230; and then some.  You end up probably spending the same amount of time having to exclude the dependencies you don&#8217;t need, especially in EAR/WAR setups</li>
<li>You pretty much have to declare the versions of every Maven plugin you use, or risk your build breaking when someone updates the plugin.</li>
<li>You can&#8217;t create a &#8216;macro goal&#8217; that is a chain of multiple goals</li>
<li>Your custom plugins might not work if it is organized as a sub-module of a project.  Inexplicably, if you run the build inside that sub-module it works.  (Might just be a problem with Ant-based plugins)</li>
<li>Maven goes out of its way to not use Ant.  So, some things that work correctly in Ant don&#8217;t in Maven (for example, building GNU compliant tarball with the assembly plugin)</li>
<li>You can activate build profiles based on OS, file existence, and environment variables in Maven, but how do you disable them?</li>
<li>You can configure the build to deploy additional artifacts (e.g. javadoc and sources), but it won&#8217;t use the repository or snapshot repository configured for your project</li>
<li>Figuring out how a build works from reading plugin declarations is not easier than reading an Ant script</li>
<li>Good luck trying to find the artifact that you need to fix your NoClassDefFoundError</li>
<li>Passing Maven properties to your AntRun configuration?  Bah! who needs that?</li>
<li>What happened to my Maven 1.x pre/post-goals?  How is attaching plugins to build phases a better solution?</li>
<li>Multi-module projects is like having old school recursive Makefiles</li>
<li>Why can&#8217;t I define variables other than artifactId, groupId, and version to be substituted when building from an archetype?</li>
<li>Why can&#8217;t all the files in archetype-resources be included in the archetype?  Why do I have to define them all in an archetype.xml as well?</li>
<li>Versions of dependencies with classifiers are not be inheritable</li>
<li>Extending a build is difficult without creating a plugin, which requires creating yet another project</li>
<li>Customizations to the build always seems to take a few takes of trial and error before you can get them working.</li>
<li>Configurations specified for an Ant-based plugin doesn&#8217;t work if they&#8217;re specified at the execution level or the build profile level.  They will work if you specify them globally</li>
<li>Maintaining updates of plugins and what bugs are fixed in what version and what Maven version it&#8217;s compatible with is a PITA.</li>
<li>Documentation sucks.  Pretty much everything out there is surface deep.  There&#8217;s 50/50 chance that features that are skimmed over in the docs won&#8217;t work as expected</li>
<li>Why does the site:deploy and site:stage-deploy behave so differently for multi-module projects?</li>
<li>Why are build profiles inheritable?</li>
</ol>
<p>So I imagine some of the explanation are vague, but my experience is that it is par for the course when you deal with builds in Maven.  Sometimes there&#8217;s seemingly no rhyme or reason for why things don&#8217;t work, and by the time you do find a workaround that does, you just don&#8217;t want to spend anymore time figuring why your previous approaches didn&#8217;t work.  I supposed the open source thing to do is to help fix the problem, but honestly, I just don&#8217;t love Maven that much.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.codeeg.com/2008/06/28/25-things-i-hate-about-maven/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 2.217 seconds -->
<!-- Cached page served by WP-Cache -->
