<?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>Yujin Kim&#039;s blog &#187; technology</title>
	<atom:link href="http://www.yujinkim.com/blog/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.yujinkim.com/blog</link>
	<description>Am learning new things every day</description>
	<lastBuildDate>Sat, 16 Apr 2011 20:35:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Looking for the holy grail</title>
		<link>http://www.yujinkim.com/blog/2011/04/16/looking-for-the-holy-grail/</link>
		<comments>http://www.yujinkim.com/blog/2011/04/16/looking-for-the-holy-grail/#comments</comments>
		<pubDate>Sat, 16 Apr 2011 20:26:00 +0000</pubDate>
		<dc:creator>yujin</dc:creator>
				<category><![CDATA[devops]]></category>
		<category><![CDATA[operations]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.yujinkim.com/blog/?p=144</guid>
		<description><![CDATA[At work, we are building a system that follows the general trend of automated system delivery to get more efficient at what we do. Here&#8217;s a little diagram that illustrates the jackpot we are trying to hit &#8211; our nirvana. The premise of the whole thing is not very different from what many people are [...]


Related posts:<ol><li><a href='http://www.yujinkim.com/blog/2010/10/29/puppet-and-mcollective/' rel='bookmark' title='Puppet and mCollective'>Puppet and mCollective</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>At work, we are building a system that follows the general trend of automated system delivery to get more efficient at what we do.</p>
<p>Here&#8217;s a little diagram that illustrates the jackpot we are trying to hit &#8211; our nirvana. <img src='http://origin.www.yujinkim.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p style="text-align: center;"><a href="http://www.yujinkim.com/blog/wp-content/uploads/2011/04/Epiphnic.png"><img class="aligncenter size-full wp-image-152" title="Epiphnic" src="http://www.yujinkim.com/blog/wp-content/uploads/2011/04/Epiphnic.png" alt="" width="558" height="410" /></a></p>
<p style="text-align: center;">
<p>The premise of the whole thing is not very different from what many people are already talking about -</p>
<ul>
<li>Puppet maintains all the facts and configurations of the system</li>
<li>Utilizing the APIs available from the hosting providers, we can dynamically provision new hosts</li>
</ul>
<p>We have added a few addition to the automated tasks.  We have done this in the past in a lose sense in that we have 4-5 sub-systems that do its part, but not quite integrated all together.  The goal is to close all the lose ends and make everything tick together.</p>
<ul>
<li>Standard directory structure, and forced layout of application directories (We allow no exception to this)</li>
<li>Our custom CMDB engine provides information about the host and the application s/application runtime that will be installed for our mostly Java based stack.</li>
<li>Our application build system (as well as CI) integrates with the CMDB to handle the graceful deployment of files &#8211; i.e it knows how to build production, staging etc based on the information it retrieves from our CMDB.</li>
<li>We plan to export our Java application statistics using JMX both to mCollective.</li>
<li>This came from my discussion with Teyo at PuppetLabs, and there might be an opportunity to add maven repository structure as one of the package provider in puppet, which will make a lot of things easier to support Java shops like ours.</li>
</ul>
<p>I had a first demo of the work that have been in progress to our internal development team and received positive feedbacks from folks (and we have a lot of smart folks on our team), so it was encouraging.   It&#8217;s not quite where I want it to be, but as the things progress more, I hope to share my learnings from my experience in trying to putting everything together.</p>


<p>Related posts:<ol><li><a href='http://www.yujinkim.com/blog/2010/10/29/puppet-and-mcollective/' rel='bookmark' title='Puppet and mCollective'>Puppet and mCollective</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.yujinkim.com/blog/2011/04/16/looking-for-the-holy-grail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Puppet and mCollective</title>
		<link>http://www.yujinkim.com/blog/2010/10/29/puppet-and-mcollective/</link>
		<comments>http://www.yujinkim.com/blog/2010/10/29/puppet-and-mcollective/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 18:05:47 +0000</pubDate>
		<dc:creator>yujin</dc:creator>
				<category><![CDATA[devops]]></category>
		<category><![CDATA[operations]]></category>
		<category><![CDATA[puppet]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.yujinkim.com/blog/?p=127</guid>
		<description><![CDATA[I&#8217;ll be honest. I haven&#8217;t really played with mCollective yet and even thought it was ironic that to solve the problem of building out complicated infrastructure, I need to build a complicated system (with mcollective being mostly Java based set up with Java based messing queue systems). But now with Puppet acquiring the intellectual property [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be honest.  I haven&#8217;t really played with mCollective yet and even thought it was ironic that to solve the problem of building out complicated infrastructure, I need to build a complicated system (with mcollective being mostly Java based set up with Java based messing queue systems).</p>
<p>But now <a href="http://www.puppetlabs.com/mcollective/">with Puppet acquiring the intellectual property of it</a>, and seeing the type of Vision that Luke and co illustrated on their announcement page, it is making me rethink (or I should really say learn) more about mCollective and its future as illustrated in Puppet Lab&#8217;s diagrams. </p>
<p>The separation of management network with the hosting datacenters just strikes me a brilliant idea.  Just recently having gone through two major hosting migration, and seeing many hosting migration going on everywhere, from EC2 to private cloud, or private cloud to dedicated cloud, etc, having this integration achieves a few awesome goals from business perspective.</p>
<p>1. Ability to manage multiple datacenters from a single source.<br />
2. Ability to move hosting with much smaller effort in the future<br />
3. Huge cost savings when moving things across different hosting options</p>
<p>Consider the following scenario:</p>
<p><a href="http://www.yujinkim.com/blog/wp-content/uploads/2010/10/Puppet-mCollective-Datacenters1.png"><img src="http://www.yujinkim.com/blog/wp-content/uploads/2010/10/Puppet-mCollective-Datacenters1-300x158.png" alt="Puppet - mCollective - Datacenters" title="Puppet - mCollective - Datacenters" width="300" height="158" class="alignleft size-medium wp-image-135" /></a></p>
<p>You may have multiple data centers, hosting options for different reasons.  In this example, you have one hosting vendor handling the .net application cluster, another for ruby on rails, and another for Java.  Some of them could be on EC2, some of them on a large enterprise scale hosting center, and some on a small hosting companies.  Due to the various type of hosting tier model you have in your organization, this type of scenario is very likely in many organizations.</p>
<p>Consider how many human hours are spent to manage all these, probably for most part manually or automated but per each data center.   For various reasons, these options might need to be changed rapidly.  The decision could come down to you to reduce cost, to consolidate the data centers, to move out  the data center, or even to add new data center to the mix.   There are millions of reasons why you may switch hosting providers and there are millions of places out there that does this at least once or twice in 5 years.</p>
<p>Now with Puppet and mCollective integration in the picture, this whole system could really REMOVE (not reduce) costs associated with these type of activities for the next 5 years.  More over, now organizations can be come almost &#8220;hosting provider agnostic&#8221; and can deploy applications to various hosting providers/data centers relying on the same configuration management system.   The only one that gets locked up would be the management network where puppet master, mcollective host, dashboard and some sort of CMDB resides on.</p>
<p>I&#8217;m looking forward to see how the integration is going to develop but I&#8217;m ready to test this out now and how I can plan on this idea now.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.yujinkim.com/blog/2010/10/29/puppet-and-mcollective/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Death of Google Wave</title>
		<link>http://www.yujinkim.com/blog/2010/10/01/death-of-google-wave/</link>
		<comments>http://www.yujinkim.com/blog/2010/10/01/death-of-google-wave/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 04:47:11 +0000</pubDate>
		<dc:creator>yujin</dc:creator>
				<category><![CDATA[operations]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[wave]]></category>

		<guid isPermaLink="false">http://www.yujinkim.com/blog/?p=82</guid>
		<description><![CDATA[While it&#8217;s an old news that google wave is being phased out, it appears that google has miscalculated the launch of this potentially game changing product and is also killing it prematurely. What&#8217;s new is that Google just opened up the service for Google App for business, and this google wave could have been a [...]


Related posts:<ol><li><a href='http://www.yujinkim.com/blog/2010/09/29/my-take-on-devops/' rel='bookmark' title='My take on DevOps'>My take on DevOps</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>While it&#8217;s an old news that google wave is being phased out, it appears that google has miscalculated the launch of this potentially game changing product and is also killing it prematurely.   What&#8217;s new is that Google just opened up the service for Google App for business, and this google wave could have been a very effective way to communicate in the workspace.  My boss Rajiv has been a strong proponent of using real time chat for operation management (see <a href="http://www.rajiv.com/blog/2009/12/10/tech-ops-irc/" title="Benefits of Using Real-Time Group Chat (IRC) in Technology Operations Management">Benefits of Using Real-Time Group Chat (IRC) in Technology Operations Management</a>)</p>
<p>With google adding the service to the google application for business offerings, it would have been easier to adopt the corporate users (that is if the corporate is allowing to set up one of the domains with google app) and allow corporate users to &#8220;wave&#8221; the conversation for various technology operations such as releases, troubleshooting, or even corporate events.</p>
<p>Focusing on the troubleshooting, it&#8217;s pretty common that if you are on a troubleshooting bridge, whenever a new person joins the call, oftentimes, the person managing the call has to provide the status updates, and that often could be somewhat distracting to the people who are investigating the issue as it disrupts the flow and conversation that had been taken place.  Wave could have been a great solution for 1) providing the history of the threads 2) allowing private conversation without interrupting the group calls and 3) providing a very complete tracking of the issues at hand.  This product could have been hence integrated with many Runbook Automation systems, as well as google search engine and would have allowed a room for a birth of fairly interesting correlation engine using google&#8217;s sophisticated search algorithm.   After all, Wave could have replaced mailing list archive, forums, and any support type Q&#038;As or FAQs &#8211; which is pretty much all the stack exchange type sites are doing these days anyway.</p>
<p>I wish google have waited a bit longer before announcing the end of the product, as I believe many would have found a good use out of it.  Rather, Google might have been caught up too much on the social aspect of it.   Most likely Google will find a way to utilize the code base in some other way and perhaps they will think of a way to target corporate/SMB market first next time.</p>


<p>Related posts:<ol><li><a href='http://www.yujinkim.com/blog/2010/09/29/my-take-on-devops/' rel='bookmark' title='My take on DevOps'>My take on DevOps</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.yujinkim.com/blog/2010/10/01/death-of-google-wave/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My take on DevOps</title>
		<link>http://www.yujinkim.com/blog/2010/09/29/my-take-on-devops/</link>
		<comments>http://www.yujinkim.com/blog/2010/09/29/my-take-on-devops/#comments</comments>
		<pubDate>Thu, 30 Sep 2010 04:24:44 +0000</pubDate>
		<dc:creator>yujin</dc:creator>
				<category><![CDATA[operations]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[devops]]></category>

		<guid isPermaLink="false">http://www.yujinkim.com/blog/?p=71</guid>
		<description><![CDATA[It&#8217;s been a bit while since the term DevOps has created some sort of buzz around the IT world. While still not widely adopted, it is gaining quite a bit of momentum, and the company I work is not an exception to this. We have been making steady improvements to adopt various concepts of devops, [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a bit while since the term DevOps has created some sort of buzz around the IT world.  While still not widely adopted, it is gaining quite a bit of momentum, and the company I work is not an exception to this.  We have been making steady improvements to adopt various concepts of devops, including built automation, employing puppet, automating documentations and such.</p>
<p>I believe much of the focus is on comparing the traditional system engineers and the &#8220;devops&#8221; type engineers.  While I have no disagreement on this concept, I think the role of devops also plays an important and positive role to the development team.  Many senior software engineers are often very good architect with good understanding of infrastructure.  At work, I have had a great honor working with very talented people who just haven&#8217;t had a chance to go through some of the processes involved in troubleshooting applications &#8211; such as reading thread dumps, analyzing heap dumps, using profilers, or even reading AWR reports, or even some of the commonly used system level debugging tools such as vmstat, iostat, strace/dtrace, etc.</p>
<p>As much as DevOps are helping bridging the gap between software engineers and operations, it can also help software engineers gain more experience or knowledge around those tools and in a way influence software engineers to learn how to think like operation people do.   This can only make the software engineers become better architects and make them equipped with troubleshooting knowledges.</p>
<p>I have been involved in various kind of interesting and challenging troubleshooting of application/infrastructure issues with other engineers(both software and system).  It has given me understand the applications much better and allow me to suggest code improvements, and software engineers giving my team feedbacks on what can be better on operation wise.  It also has given some of the software engineers exposures to the above mentioned tools that allowed them to be able to diagnose the applications before the code gets deployed to production systems.</p>
<p>While the world is not a perfect place, I do really believe that devops movement is providing positive influence to the development team, and vice versa.  The true value of devops, IMHO, is reinforcing the fact that every one is providing service to the same client in the end.  In other words, from clients eyes, it&#8217;s really the technology department that&#8217;s providing what they need, and not software engineering team or the operation team.  </p>
<p>Bottom line: devops is really about creating a culture, and a mindset that we are all in this together and let&#8217;s work it out together.  </p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.yujinkim.com/blog/2010/09/29/my-take-on-devops/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux on PPC</title>
		<link>http://www.yujinkim.com/blog/2010/02/07/linux-on-ppc/</link>
		<comments>http://www.yujinkim.com/blog/2010/02/07/linux-on-ppc/#comments</comments>
		<pubDate>Sun, 07 Feb 2010 18:39:29 +0000</pubDate>
		<dc:creator>yujin</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.yujinkim.com/blog/?p=57</guid>
		<description><![CDATA[I just spent the cold Sataurday evening staying at home and installed Ubuntu on my old G5 dual cpu Power Mac PPC. I was hoping to install Fedora 12 but Fedora unfortunately wasn&#8217;t able to recognize HFS+ file system very well (which was apparent when I looked at fdisk).  Installing Fedora using the GUI came [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>I just spent the cold Sataurday evening staying at home and installed Ubuntu on my old G5 dual cpu Power Mac PPC.</p>
<p>I was hoping to install Fedora 12 but Fedora unfortunately wasn&#8217;t able to recognize HFS+ file system very well (which was apparent when I looked at fdisk).  Installing Fedora using the GUI came pretty close but it didn&#8217;t know how to install bootloader.  I also was going to try OpenSuse but overall impression I got was ubuntu has the better support (since it&#8217;s community driven.)  BTW, I installed the server edition knowing I wanted this box to just act as a server for puppet and other things.</p>
<p>Anyhow, this post is just to keep track of the changes I&#8217;ve made</p>
<pre>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="kw2">sudo</span> <span class="kw2">apt-get</span> <span class="kw2">install</span> puppet
<span class="kw2">sudo</span> <span class="kw2">apt-get</span> <span class="kw2">install</span> <span class="kw2">zip</span>
<span class="kw2">sudo</span> <span class="kw2">apt-get</span> <span class="kw2">install</span> <span class="kw2">gcc</span>
<span class="kw2">sudo</span> <span class="kw2">apt-get</span> <span class="kw2">install</span> chkconfig
<span class="kw2">sudo</span> <span class="kw2">apt-get</span> <span class="kw2">install</span> sysv-rc-conf
<span class="kw2">sudo</span> <span class="kw2">apt-get</span> <span class="kw2">install</span> whois
<span class="kw2">sudo</span> <span class="kw2">apt-get</span> <span class="kw2">install</span> libio-socket-ssl-perl
<span class="kw2">sudo</span> <span class="kw2">apt-get</span> <span class="kw2">install</span> libnss-mdns</div>
</div>
</pre>
<p>Also installed ddclient for dyndns.</p>
<pre>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="kw2">wget</span> http:<span class="sy0">//</span>cdn.dyndns.com<span class="sy0">/</span>ddclient.tar.gz
<span class="kw2">mkdir</span> <span class="sy0">/</span>etc<span class="sy0">/</span>ddclient
<span class="kw2">cp</span> sample-etc_ddclient.conf <span class="sy0">/</span>etc<span class="sy0">/</span>ddclient<span class="sy0">/</span>ddclient.conf
<span class="kw2">vi</span> <span class="sy0">/</span>etc<span class="sy0">/</span>ddclient<span class="sy0">/</span>ddclient.conf
<span class="kw2">cp</span> sample-etc_rc.d_init.d_ddclient <span class="sy0">/</span>etc<span class="sy0">/</span>init.d<span class="sy0">/</span>ddclient
<span class="kw2">vi</span> <span class="sy0">/</span>etc<span class="sy0">/</span>init.d<span class="sy0">/</span>ddclient
<span class="kw2">mkdir</span> <span class="sy0">/</span>var<span class="sy0">/</span>cache<span class="sy0">/</span>ddclient
sysv-rc-conf 
<span class="sy0">/</span>etc<span class="sy0">/</span>init.d<span class="sy0">/</span>ddclient start</div>
</div>
</pre>
<p>Updated the network interface to have static ip</p>
<pre>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="kw3">cd</span> <span class="sy0">/</span>etc<span class="sy0">/</span>network
<span class="kw2">cp</span> <span class="re5">-a</span> interfaces interfaces.bak
iface eth0 inet static
address x.x.x.x
netmask x.x.x.x
network x.x.x.x
broadcast x.x.x.x
gateway x.x.x.x</div>
</div>
</pre>
<p>I&#8217;m now working on getting S3 storage set up so I can back up stuff there.</p>
<p>http://xentek.net/articles/448/installing-fuse-s3fs-and-sshfs-on-ubuntu/</p>
<pre>
<div class="codesnip-container" >
<div class="bash codesnip" style="font-family:monospace;"><span class="kw2">sudo</span> <span class="kw2">aptitude</span> <span class="kw2">install</span> build-essential libcurl4-openssl-dev libxml2-dev libfuse-dev comerr-dev libfuse2 libidn11-dev libkadm55 libkrb5-dev libldap2-dev libselinux1-dev libsepol1-dev pkg-config fuse-utils sshfs</div>
</div>
</pre>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.yujinkim.com/blog/2010/02/07/linux-on-ppc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Maven2 for non-java build</title>
		<link>http://www.yujinkim.com/blog/2009/06/10/maven2-for-non-java-build/</link>
		<comments>http://www.yujinkim.com/blog/2009/06/10/maven2-for-non-java-build/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 02:03:06 +0000</pubDate>
		<dc:creator>yujin</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[maven2]]></category>

		<guid isPermaLink="false">http://www.yujinkim.com/blog/?p=15</guid>
		<description><![CDATA[At work I&#8217;ve been working with my coworkers on standardizing our build process. We are managing 20+ public sites, each consisting of several applications in different platforms. So the idea that I had developed was using war as any web application builds (and same could be said for jar for any non-web applications. After all, [...]


No related posts.]]></description>
			<content:encoded><![CDATA[<p>At work I&#8217;ve been working with my coworkers on standardizing our build process.  We are managing 20+ public sites, each consisting of several applications in different platforms.  So the idea that I had developed was using war as any web application builds (and same could be said for jar for any non-web applications.   After all, war/jar is just a formality and they are just nicely structured zip files.</p>
<p>So I&#8217;ve started building out what I ended up calling bundles &#8211; basically stock distribution of such php applications as wordpress, drupal, phpBB etc using the standard maven 2 suggested layout with a pom.xml in it.</p>
<p>The pom.xml would look like this</p>
<div class="codesnip-container" >
<div class="xml codesnip" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;project</span></span><br />
<span class="sc3">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">xmlns</span>=<span class="st0">&quot;http://maven.apache.org/POM/4.0.0&quot;</span></span><br />
<span class="sc3">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">xmlns:xsi</span>=<span class="st0">&quot;http://www.w3.org/2001/XMLSchema-instance&quot;</span></span><br />
<span class="sc3">&nbsp; &nbsp; &nbsp; &nbsp; <span class="re0">xsi:schemaLocation</span>=<span class="st0">&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot;</span><span class="re2">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;modelVersion<span class="re2">&gt;</span></span></span>4.0.0<span class="sc3"><span class="re1">&lt;/modelVersion<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;groupId<span class="re2">&gt;</span></span></span>org.drupal.bundles<span class="sc3"><span class="re1">&lt;/groupId<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;artifactId<span class="re2">&gt;</span></span></span>drupal<span class="sc3"><span class="re1">&lt;/artifactId<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;packaging<span class="re2">&gt;</span></span></span>war<span class="sc3"><span class="re1">&lt;/packaging<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;version<span class="re2">&gt;</span></span></span>6.9<span class="sc3"><span class="re1">&lt;/version<span class="re2">&gt;</span></span></span><br />
<span class="sc3"><span class="re1">&lt;/project<span class="re2">&gt;</span></span></span></div>
</div>
<div>Once this is installed on your maven2 repository, you create your own project using maven war overlay.</div>
<div class="codesnip-container" >
<div class="xml codesnip" style="font-family:monospace;">&#8230;.<br />
<span class="sc3"><span class="re1">&lt;plugin<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;groupId<span class="re2">&gt;</span></span></span>org.apache.maven.plugins<span class="sc3"><span class="re1">&lt;/groupId<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;artifactId<span class="re2">&gt;</span></span></span>maven-war-plugin<span class="sc3"><span class="re1">&lt;/artifactId<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;configuration<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;dependentWarIncludes<span class="re2">&gt;</span></span></span>**/*<span class="sc3"><span class="re1">&lt;/dependentWarIncludes<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;overlays<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;overlay<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;groupId<span class="re2">&gt;</span></span></span>org.drupal.bundles<span class="sc3"><span class="re1">&lt;/groupId<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;artifactId<span class="re2">&gt;</span></span></span>drupal<span class="sc3"><span class="re1">&lt;/artifactId<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;targetPath<span class="re2">&gt;</span></span></span>drupal<span class="sc3"><span class="re1">&lt;/targetPath<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/overlay<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/overlays<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/configuration<span class="re2">&gt;</span></span></span><br />
<span class="sc3"><span class="re1">&lt;/plugin<span class="re2">&gt;</span></span></span></p>
<p><span class="sc3"><span class="re1">&lt;dependencies<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;dependency<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;groupId<span class="re2">&gt;</span></span></span>org.drupal.bundles<span class="sc3"><span class="re1">&lt;/groupId<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;artifactId<span class="re2">&gt;</span></span></span>drupal<span class="sc3"><span class="re1">&lt;/artifactId<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;version<span class="re2">&gt;</span></span></span>6.9<span class="sc3"><span class="re1">&lt;/version<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;type<span class="re2">&gt;</span></span></span>war<span class="sc3"><span class="re1">&lt;/type<span class="re2">&gt;</span></span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc3"><span class="re1">&lt;/dependency<span class="re2">&gt;</span></span></span><br />
<span class="sc3"><span class="re1">&lt;/dependencies<span class="re2">&gt;</span></span></span><br />
&#8230;</div>
</div>
<p>Using this structure, you can put your own customization to the stock drupal code in your own maven2 project, while keeping the original source code in tact, hence giving you a easier way to manage base version upgrades etc.</p>
<p>Another added benefit to this is you can utilize zillions of maven2 plugins out there, including eclipse plugin to make your php app accessible in your eclipse.   The most useful plugin is you can use Caucho&#8217;s resin plugin, allowing you to run your php application using quercus without needing any apache/php set up for your development environment.</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.yujinkim.com/blog/2009/06/10/maven2-for-non-java-build/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>


<!-- W3 Total Cache: Minify debug info:
Engine:             disk: basic
Theme:              43ac9
Template:           category
-->
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Database Caching 21/62 queries in 0.045 seconds using disk: basic
Object Caching 1363/1363 objects using disk: basic

Served from: origin.www.yujinkim.com @ 2012-02-05 22:01:37 -->
