<?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>Adam Sherman</title>
	<atom:link href="http://www.sherman.ca/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sherman.ca</link>
	<description>Mostly random thoughts on software, gear and the great outdoors.</description>
	<lastBuildDate>Mon, 17 Dec 2012 16:08:02 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Out in a puddle with the Land Cruiser Club</title>
		<link>http://www.sherman.ca/archives/2012/12/17/puddle-land-cruiser/</link>
		<comments>http://www.sherman.ca/archives/2012/12/17/puddle-land-cruiser/#comments</comments>
		<pubDate>Mon, 17 Dec 2012 16:01:30 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Outside]]></category>
		<category><![CDATA[4x4]]></category>
		<category><![CDATA[land cruiser]]></category>
		<category><![CDATA[mud]]></category>
		<category><![CDATA[truck]]></category>

		<guid isPermaLink="false">http://www.sherman.ca/?p=323</guid>
		<description><![CDATA[]]></description>
				<content:encoded><![CDATA[<iframe width="560" height="315" src="http://www.youtube.com/embed/2Y6ye86eP6I?rel=0" frameborder="0" allowfullscreen></iframe>
]]></content:encoded>
			<wfw:commentRss>http://www.sherman.ca/archives/2012/12/17/puddle-land-cruiser/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Posting on the Versature Blog</title>
		<link>http://www.sherman.ca/archives/2012/04/04/posting-on-the-versature-blog/</link>
		<comments>http://www.sherman.ca/archives/2012/04/04/posting-on-the-versature-blog/#comments</comments>
		<pubDate>Wed, 04 Apr 2012 17:18:33 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Versature]]></category>
		<category><![CDATA[hosted pbx]]></category>
		<category><![CDATA[versature]]></category>

		<guid isPermaLink="false">http://www.sherman.ca/?p=318</guid>
		<description><![CDATA[I have been posting on Versature&#8217;s blog, conVERSAtion, as most of that content is better suited to it. A few recent posts of mine: Firmware Labour Pain Office Extension in Your Pocket Taming the Statistics Fire Hose Alternate Contact So take a look over there for more interesting posts. &#160;]]></description>
				<content:encoded><![CDATA[<p>I have been posting on Versature&#8217;s blog, <a title="Versature Blog" href="http://inside.versature.com/">conVERSAtion</a>, as most of that content is better suited to it. A few recent posts of mine:</p>

<ul>
    <li><a href="http://inside.versature.com/2012/04/polycom-firmware/">Firmware Labour Pain</a></li>
    <li><a href="http://inside.versature.com/2012/04/office-extension-in-your-pocket/">Office Extension in Your Pocket</a></li>
    <li><a href="http://inside.versature.com/2012/03/statistics/">Taming the Statistics Fire Hose</a></li>
    <li><a href="http://inside.versature.com/2011/12/alternate-contact/">Alternate Contact</a></li>
</ul>

<p>So take a look over there for more interesting posts.</p>

<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sherman.ca/archives/2012/04/04/posting-on-the-versature-blog/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automated Releases with Maven and Google App Engine</title>
		<link>http://www.sherman.ca/archives/2012/02/15/releases-with-maven-and-gae/</link>
		<comments>http://www.sherman.ca/archives/2012/02/15/releases-with-maven-and-gae/#comments</comments>
		<pubDate>Wed, 15 Feb 2012 16:09:36 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[J2EE]]></category>

		<guid isPermaLink="false">http://www.sherman.ca/?p=306</guid>
		<description><![CDATA[Versature has been building our applications using Java and deploying them on Google App Engine for some time. It has been a very effective solution for us. Recently, I wanted to improve our release process by making it more formal and automated. After the usual battle with Maven, I managed to win. Our current build [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.sherman.ca/wp-content/uploads/2012/02/appengine_lowres.png"><img class="alignleft size-full wp-image-309" title="Google App Engine" src="http://www.sherman.ca/wp-content/uploads/2012/02/appengine_lowres.png" alt="Google App Engine Logo" width="142" height="109" /></a><a title="Versature Corp." href="http://www.versature.com/" target="_blank">Versature</a> has been building our applications using <a title="Java" href="http://www.java.com/" target="_blank">Java</a> and deploying them on <a title="App Engine" href="http://code.google.com/appengine/" target="_blank">Google App Engine</a> for some time. It has been a very effective solution for us.</p>

<p>Recently, I wanted to improve our release process by making it more formal and automated. After the usual battle with <a title="Apache Maven" href="http://maven.apache.org" target="_blank">Maven</a>, I managed to win. <img src='http://www.sherman.ca/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>

<p>Our current build automates the following:</p>

<ul>
    <li>Remove the trailing <code>-SNAPSHOT</code> from the version number in the POM</li>
    <li>Tag the release in Subversion</li>
    <li>Filter the <code>appengine-web.xml</code> to contain the version number</li>
    <li>Build and deploy to GAE</li>
    <li>Increment version number in the POM and add the trailing <code>-SNAPSHOT</code></li>
</ul>

<p>All of the above is achieved with two Maven commands: <code>release:prepare</code> and <code>release:perform</code>.</p>

<p>Here is the POM with most of the irrelevant parts removed:</p>


<div class="wp_syntax"><table><tr><td class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;?xml</span> <span style="color: #000066;">version</span>=<span style="color: #ff0000;">&quot;1.0&quot;</span> <span style="color: #000066;">encoding</span>=<span style="color: #ff0000;">&quot;UTF-8&quot;</span><span style="color: #000000; font-weight: bold;">?&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;project</span> <span style="color: #000066;">xmlns</span>=<span style="color: #ff0000;">&quot;http://maven.apache.org/POM/4.0.0&quot;</span> <span style="color: #000066;">xmlns:xsi</span>=<span style="color: #ff0000;">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span> <span style="color: #000066;">xsi:schemaLocation</span>=<span style="color: #ff0000;">&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;modelVersion<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>4.0.0<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/modelVersion<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>0-9-0-SNAPSHOT<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;packaging<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>war<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/packaging<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Versature Dashboard<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;scm<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;connection<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>scm:svn:https://REMOVED/trunk<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/connection<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/scm<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;repositories<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;repository<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>google-maven-repo<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Maven Google App Engine Repository<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>http://maven-gae-plugin.googlecode.com/svn/repository/<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/repository<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;repository<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>codehaus<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>codehaus<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>http://repository.codehaus.org/org/codehaus/groovy/<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/repository<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/repositories<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pluginRepositories<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;pluginRepository<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>maven-gae-plugin-repo<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Maven Google App Engine Repository<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>http://maven-gae-plugin.googlecode.com/svn/repository/<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/url<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/pluginRepository<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/pluginRepositories<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependencies<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        REMOVED
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependencies<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;build<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;testOutputDirectory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>target/test-classes<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/testOutputDirectory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;outputDirectory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${webappDirectory}/WEB-INF/classes<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/outputDirectory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;testSourceDirectory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>src/test/java<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/testSourceDirectory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugins<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.apache.maven.plugins<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>maven-war-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2.1.1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;executions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;execution<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;phase<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>compile<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/phase<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goals<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>exploded<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goals<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/execution<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/executions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;webResources<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;resource<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;directory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>src/main/webapp<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/directory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;filtering<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/filtering<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;includes<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                          <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;include<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>**/appengine-web.xml<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/include<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/includes<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                      <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/resource<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/webResources<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;webappDirectory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${webappDirectory}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/webappDirectory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.codehaus.mojo<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>gwt-maven-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${gwt-plugin.version}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;logLevel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>INFO<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/logLevel<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;port<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${gae.port}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/port<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;server<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.google.appengine.tools.development.gwt.AppEngineLauncher<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/server<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;runTarget<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>/REMOVED<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/runTarget<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;style<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>OBF<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/style<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;executions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;execution<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;extraJvmArgs<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>-Xmx1024m -Xms512m<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/extraJvmArgs<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;module<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.versature.dashboard.Dashboard<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/module<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goals<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>compile<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goals<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/execution<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/executions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>net.kindleit<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>maven-gae-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>0.9.2<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;unpackVersion<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${gae.version}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/unpackVersion<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;serverId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>appengine.google.com<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/serverId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependencies<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>net.kindleit<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>gae-runtime<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${gae.version}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;type<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>pom<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/type<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependency<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/dependencies<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.apache.maven.plugins<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>maven-release-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>2.2.2<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;scmCommentPrefix<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>[RELEASE] <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/scmCommentPrefix<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goals<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>gae:deploy<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goals<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>org.codehaus.gmaven<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>gmaven-plugin<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${gmaven.version}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;executions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;execution<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>sources<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goals<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>generateStubs<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>compile<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>generateTestStubs<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>testCompile<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goals<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/execution<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;execution<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>properties<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;phase<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>validate<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/phase<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goals<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>execute<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goal<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/goals<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;source<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                                project.properties[&quot;gae-application.version&quot;] = project.version.toLowerCase()
                            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/source<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/configuration<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/execution<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/executions<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugin<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/plugins<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/build<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #808080; font-style: italic;">&lt;!-- Specify hard-coded project properties here --&gt;</span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;gmaven.version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.3<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/gmaven.version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;gae.version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.6.2.1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/gae.version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;gae.port<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>9090<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/gae.port<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;webappDirectory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>${project.build.directory}/${project.build.finalName}<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/webappDirectory<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;profiles<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;profile<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>release-build<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;activation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;property<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>performRelease<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;value<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>true<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/value<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/property<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/activation<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
&nbsp;
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
                <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;gwt.style<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>OBF<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/gwt.style<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
            <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/properties<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
        <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/profile<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/profiles<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>com.versature.dashboard<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/groupId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
    <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>dashboard<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/artifactId<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/project<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></td></tr></table></div>


<p>If you run into an error similar to this one:</p>

<p><pre>
com.google.appengine.tools.admin.AdminException: Unable to update app: Error posting to URL: https://appengine.google.com/api/appversion/create?app_id=versature-dashboardhr&amp;version=0-8-1-SNAPSHOT&amp;
400 Bad Request
Error when loading application configuration:
Unable to assign value '0-8-1-SNAPSHOT' to attribute 'version':
Value '0-8-1-SNAPSHOT' for version does not match expression '^(?!-)[a-z\d&#45;]{1,100}$'
</pre></p>

<p>It is because GAE only accepts lowercase letters, digits and hyphens in version names. (Because those version names become URLs.) I solved this by using a snippet of <a href="http://groovy.codehaus.org/" title="Goovy" target="_blank">Groovy</a> (Using the GMaven plugin.) code to automatically create a property with all lowercase letters before filtering it into the <code>appengine-web.xml</code>. So version <code>0-8-0-SNAPSHOT</code> becomes <code>0-8-0-snapshot</code>:</p>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="groovy" style="font-family:monospace;">project.<span style="color: #006600;">properties</span><span style="color: #66cc66;">&#91;</span><span style="color: #ff0000;">&quot;gae-application.version&quot;</span><span style="color: #66cc66;">&#93;</span> <span style="color: #66cc66;">=</span> project.<span style="color: #006600;">version</span>.<span style="color: #006600;">toLowerCase</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span></pre></td></tr></table></div>


<p>And that&#8217;s it, it Just Works&trade;. Gotta love Maven!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sherman.ca/archives/2012/02/15/releases-with-maven-and-gae/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Developer Position Open at Versature</title>
		<link>http://www.sherman.ca/archives/2011/12/05/developer-position-open-at-versature/</link>
		<comments>http://www.sherman.ca/archives/2011/12/05/developer-position-open-at-versature/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 21:11:03 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[J2EE]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[careers]]></category>

		<guid isPermaLink="false">http://www.sherman.ca/?p=301</guid>
		<description><![CDATA[Versature is hiring again.]]></description>
				<content:encoded><![CDATA[<p>We&#8217;re hiring again at Versature, take a look:</p>

<p><a href="http://inside.versature.com/2011/12/developer-position-open/">Developer Position Open</a></p>

<p>It&#8217;s a software developer position that gets you working directly with me. Make sure to spread the word!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sherman.ca/archives/2011/12/05/developer-position-open-at-versature/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Last American Who Knew What The Fuck He Was Doing Dies &#124; The Onion</title>
		<link>http://www.sherman.ca/archives/2011/10/07/last-american-who-knew-what-the-fuck-he-was-doing-dies-the-onion-americas-finest-news-source/</link>
		<comments>http://www.sherman.ca/archives/2011/10/07/last-american-who-knew-what-the-fuck-he-was-doing-dies-the-onion-americas-finest-news-source/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 13:15:17 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Apple]]></category>

		<guid isPermaLink="false">http://www.sherman.ca/?p=299</guid>
		<description><![CDATA[This is beautiful–The Onion has managed to embed such a compliment to Steve Jobs in a satirical piece: Last American Who Knew What The Fuck He Was Doing Dies Well done. &#160;]]></description>
				<content:encoded><![CDATA[<p>This is beautiful–The Onion has managed to embed such a compliment to Steve Jobs in a satirical piece:</p>

<p><a href="http://www.theonion.com/articles/last-american-who-knew-what-the-fuck-he-was-doing,26268/">Last American Who Knew What The Fuck He Was Doing Dies</a></p>

<p>Well done.</p>

<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sherman.ca/archives/2011/10/07/last-american-who-knew-what-the-fuck-he-was-doing-dies-the-onion-americas-finest-news-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>xkcd: Password Strength</title>
		<link>http://www.sherman.ca/archives/2011/08/10/xkcd-password-strength/</link>
		<comments>http://www.sherman.ca/archives/2011/08/10/xkcd-password-strength/#comments</comments>
		<pubDate>Wed, 10 Aug 2011 12:43:55 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[comic]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.sherman.ca/?p=292</guid>
		<description><![CDATA[As always, xkcd makes a great point through a comic with &#8220;Password Strength&#8221;. I do not know if the point he is making is actually valid, some research will be required. Update: Ben Rockwood comments on the webcomic with &#8220;Password Myths&#8221;. I believe that Mr. Rockwood is correct in his appraisal that we should all start using [...]]]></description>
				<content:encoded><![CDATA[<p>As always, <a href="http://xkcd.com">xkcd</a> makes a great point through a comic with <a title="Password Strength" href="http://xkcd.com/936/">&#8220;Password Strength&#8221;</a>.</p>

<div class="wp-caption aligncenter" style="width: 750px"><a href="http://xkcd.com/936/"><img title="Password Strength" src="http://imgs.xkcd.com/comics/password_strength.png" alt="Password Strength" width="740" height="601" /></a><p class="wp-caption-text">Password Strength</p></div>

<p>I do not know if the point he is making is actually valid, some research will be required.</p>

<p><strong>Update:</strong> Ben Rockwood comments on the webcomic with <a title="Password Myths" href="http://cuddletech.com/blog/?p=666">&#8220;Password Myths&#8221;</a>.</p>

<p>I believe that Mr. Rockwood is correct in his appraisal that we should all start using the term <em>pass phrase</em>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sherman.ca/archives/2011/08/10/xkcd-password-strength/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NullPosts: suds and appengine</title>
		<link>http://www.sherman.ca/archives/2011/08/04/nullposts-suds-and-appengine/</link>
		<comments>http://www.sherman.ca/archives/2011/08/04/nullposts-suds-and-appengine/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 00:01:32 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[gae]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://www.sherman.ca/?p=289</guid>
		<description><![CDATA[I ran into the issue described in NullPosts: suds and appengine today. This is caused by the great Python SOAP API, suds, and Google App Engine not playing together to do some of the restrictions in GAE. Thanks NullPosts!]]></description>
				<content:encoded><![CDATA[<p>I ran into the issue described in <a href="http://omiethenull.blogspot.com/2010/08/suds-and-appengine.html">NullPosts: suds and appengine</a> today. This is caused by the great <a href="http://www.python.org">Python</a> <a href="http://en.wikipedia.org/wiki/SOAP">SOAP</a> API, <a href="https://fedorahosted.org/suds/">suds</a>, and <a href="http://code.google.com/appengine/">Google App Engine</a> not playing together to do some of the restrictions in GAE. Thanks <a href="http://omiethenull.blogspot.com/">NullPosts</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sherman.ca/archives/2011/08/04/nullposts-suds-and-appengine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google App Engine&#8217;s Python Exception Syntax</title>
		<link>http://www.sherman.ca/archives/2011/08/04/gae-python-exception-syntax/</link>
		<comments>http://www.sherman.ca/archives/2011/08/04/gae-python-exception-syntax/#comments</comments>
		<pubDate>Thu, 04 Aug 2011 19:39:46 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[gae]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://www.sherman.ca/?p=285</guid>
		<description><![CDATA[Remember, Python 2.5 has this exception syntax: try: raise FooException("Darn!") except FooException, e print("Error: %s" % e) The newer syntax is: try: raise FooException("Darn!") except FooException as e print("Error: %s" % e) I ran into this when uploading an application to Google App Engine, which then produced this cryptic error: &#60;type 'exceptions.SyntaxError'&#62;: invalid syntax (main.py, [...]]]></description>
				<content:encoded><![CDATA[<p>Remember, <a href="http://docs.python.org/release/2.5.4/tut/node10.html#SECTION0010300000000000000000">Python 2.5</a> has this exception syntax:
<pre>try:
    raise FooException("Darn!")
except FooException, e
    print("Error: %s" % e)</pre>
The <a href="http://docs.python.org/reference/compound_stmts.html#the-try-statement">newer syntax</a> is:
<pre>try:
    raise FooException("Darn!")
except FooException as e
    print("Error: %s" % e)</pre>
I ran into this when uploading an application to <a title="Google App Engine" href="http://code.google.com/appengine/">Google App Engine</a>, which then produced this cryptic error:
<pre>&lt;type 'exceptions.SyntaxError'&gt;: invalid syntax (main.py, line 64)</pre>
Where line 64 is the line containing the not-yet-implemented <strong>as</strong> keyword.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sherman.ca/archives/2011/08/04/gae-python-exception-syntax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Get sources and Javadocs</title>
		<link>http://www.sherman.ca/archives/2011/08/01/get-sources-and-javadocs/</link>
		<comments>http://www.sherman.ca/archives/2011/08/01/get-sources-and-javadocs/#comments</comments>
		<pubDate>Mon, 01 Aug 2011 15:12:46 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[J2EE]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[maven]]></category>

		<guid isPermaLink="false">http://www.sherman.ca/?p=282</guid>
		<description><![CDATA[How to tell Maven to download all Javadoc for your project&#8217;s dependencies: mvn dependency:resolve -Dclassifier=javadoc via Maven Micro-Tip: Get sources and Javadocs &#124; Ted Wise.]]></description>
				<content:encoded><![CDATA[<p>How to tell Maven to download all Javadoc for your project&#8217;s dependencies:</p>

<blockquote>
<pre>mvn dependency:resolve -Dclassifier=javadoc</pre>
</blockquote>

<p>via <a href="http://tedwise.com/2010/01/27/maven-micro-tip-get-sources-and-javadocs/">Maven Micro-Tip: Get sources and Javadocs | Ted Wise</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sherman.ca/archives/2011/08/01/get-sources-and-javadocs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac OS X 10.7 &#8220;Lion&#8221; Seems to Have a Broken Python easy_install</title>
		<link>http://www.sherman.ca/archives/2011/07/25/lion-broken-python-easy_install/</link>
		<comments>http://www.sherman.ca/archives/2011/07/25/lion-broken-python-easy_install/#comments</comments>
		<pubDate>Mon, 25 Jul 2011 19:11:36 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Mac OS]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.sherman.ca/?p=276</guid>
		<description><![CDATA[One of the first things I needed after upgrading to Mac OS X 10.7 (Lion) was to make some Python scripts work. However easy_install seemed to be broken: $ easy_install psycopg2 Traceback (most recent call last): File "/usr/local/bin/easy_install", line 5, in &#60;module&#62; from pkg_resources import load_entry_point File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2607, in &#60;module&#62; parse_requirements(requires), Environment() File [...]]]></description>
				<content:encoded><![CDATA[<p>One of the first things I needed after upgrading to <a href="http://www.apple.com/macosx/" target="_blank">Mac OS X 10.7 (Lion)</a> was to make some Python scripts work. However easy_install seemed to be broken:
<pre>$ easy_install psycopg2
Traceback (most recent call last):
  File "/usr/local/bin/easy_install", line 5, in &lt;module&gt;
    from pkg_resources import load_entry_point
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 2607, in &lt;module&gt;
    parse_requirements(<strong>requires</strong>), Environment()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources.py", line 565, in resolve
    raise DistributionNotFound(req)  # XXX put more info here
pkg_resources.DistributionNotFound: setuptools==0.6c12dev-r88795</pre>
I fixed this by installing <a href="http://packages.python.org/distribute/" target="_blank">Distribute</a> and then the new <a href="http://developer.apple.com/technologies/tools/" target="_blank">Mac OS X Developer Tools</a>.</p>

<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sherman.ca/archives/2011/07/25/lion-broken-python-easy_install/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
