<?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>Build Tools Archives - scmGalaxy</title>
	<atom:link href="https://www.scmgalaxy.com/tutorials/category/build-tools/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.scmgalaxy.com/tutorials/category/build-tools/</link>
	<description>A Platform for Software Engineers</description>
	<lastBuildDate>Sat, 27 Feb 2021 09:55:12 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>
	<item>
		<title>Release Artificats with Maven Release and Git Flow Plugins</title>
		<link>https://www.scmgalaxy.com/tutorials/release-artificats-with-maven-release-and-git-flow-plugins/</link>
					<comments>https://www.scmgalaxy.com/tutorials/release-artificats-with-maven-release-and-git-flow-plugins/#comments</comments>
		
		<dc:creator><![CDATA[scmgalaxy K]]></dc:creator>
		<pubDate>Thu, 25 Sep 2014 00:00:00 +0000</pubDate>
				<category><![CDATA[Build Tools]]></category>
		<guid isPermaLink="false">http://www.scmgalaxy.com/tutorials/2014/09/25/release-artificats-with-maven-release-and-git-flow-plugins/</guid>

					<description><![CDATA[<p>There are various ways using you can release the artifacts.  There are two plugins which is being frequently used is… [&#8230;]</p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/release-artificats-with-maven-release-and-git-flow-plugins/">Release Artificats with Maven Release and Git Flow Plugins</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-3577" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2014/09/artificats-with-maven-relea.png" alt="artificats-with-maven-release-and-git-flow" width="600" height="400" srcset="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2014/09/artificats-with-maven-relea.png 600w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2014/09/artificats-with-maven-relea-300x200.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></p>
<p>There are various ways using you can release the artifacts.  There are two plugins which is being frequently used is…</p>
<ol>
<li>Maven Release Plugin</li>
<li>Maven Git Flow Plugin</li>
</ol>
<p><strong>Maven Release Plugin</strong><br />
This plugin is used to release a project with Maven, saving a lot of repetitive, manual work. Releasing a project is made in two steps: prepare and perform.</p>
<p><strong>Maven Git Flow Plugin</strong><br />
The Maven JGit-Flow Plugin is based on and is a replacement for the maven-release-plugin enabling support for git-flow style releases via maven.</p>
<p><strong>Reference</strong><br />
<a href="http://george-stathis.com/2013/11/09/painless-maven-project-releases-with-maven-gitflow-plugin/">http://george-stathis.com/2013/11/09/painless-maven-project-releases-with-maven-gitflow-plugin/</a><br />
<a href="http://maven.apache.org/maven-release/maven-release-plugin/examples/prepare-release.html">http://maven.apache.org/maven-release/maven-release-plugin/examples/prepare-release.html</a><br />
<a href="http://stackoverflow.com/questions/4466714/how-to-customise-the-tag-format-of-the-maven-release-plugin">http://stackoverflow.com/questions/4466714/how-to-customise-the-tag-format-of-the-maven-release-plugin</a><br />
<a href="https://bitbucket.org/atlassian/jgit-flow/wiki/Home">https://bitbucket.org/atlassian/jgit-flow/wiki/Home</a><br />
<a href="http://maven.apache.org/maven-release/maven-release-plugin/examples/prepare-release.html#Overriding_the_default_tag_name_format">http://maven.apache.org/maven-release/maven-release-plugin/examples/prepare-release.html#Overriding_the_default_tag_name_format</a><br />
<a href="http://www.fiveminutes.eu/maven-release-plugin-8-tips-tricks/">http://www.fiveminutes.eu/maven-release-plugin-8-tips-tricks/</a><br />
<a href="https://bitbucket.org/atlassian/jgit-flow/wiki/Home.wiki#!getting-the-plugin">https://bitbucket.org/atlassian/jgit-flow/wiki/Home.wiki#!getting-the-plugin</a><br />
<a href="http://blogs.atlassian.com/2013/05/maven-git-flow-plugin-for-better-releases/">http://blogs.atlassian.com/2013/05/maven-git-flow-plugin-for-better-releases/</a></p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/release-artificats-with-maven-release-and-git-flow-plugins/">Release Artificats with Maven Release and Git Flow Plugins</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.scmgalaxy.com/tutorials/release-artificats-with-maven-release-and-git-flow-plugins/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>What are the Advance Features of Smart Build Tools?</title>
		<link>https://www.scmgalaxy.com/tutorials/advance-features-of-smart-build-tools-2/</link>
					<comments>https://www.scmgalaxy.com/tutorials/advance-features-of-smart-build-tools-2/#respond</comments>
		
		<dc:creator><![CDATA[scmgalaxy K]]></dc:creator>
		<pubDate>Tue, 22 Feb 2011 06:47:24 +0000</pubDate>
				<category><![CDATA[Build Tools]]></category>
		<category><![CDATA[Advance]]></category>
		<category><![CDATA[Advance Features]]></category>
		<category><![CDATA[Build]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[Features of Smart Build Tools]]></category>
		<category><![CDATA[Smart]]></category>
		<category><![CDATA[Smart Build]]></category>
		<category><![CDATA[Smart Build Tools]]></category>
		<category><![CDATA[Smart Build Tools Advance Features]]></category>
		<category><![CDATA[Smart Build Tools Features]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[What]]></category>
		<guid isPermaLink="false">http://www.scmgalaxy.com/tutorials/2011/02/22/advance-features-of-smart-build-tools-2/</guid>

					<description><![CDATA[<p>Advance Features of Smart Build Tools {slideshare}[slideshare id=6995921&#38;doc=advancefeaturesofsmartbuildandtoolsstudy-110220215438-phpapp02&#38;type=d]{/slideshare}</p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/advance-features-of-smart-build-tools-2/">What are the Advance Features of Smart Build Tools?</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1><img decoding="async" class="alignnone size-full wp-image-3913 aligncenter" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2011/02/smart-build-tools-features.png" alt="smart-build-tools-features" width="600" height="400" srcset="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2011/02/smart-build-tools-features.png 600w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2011/02/smart-build-tools-features-300x200.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></h1>
<h1 class="h-slideshow-title">Advance Features of Smart Build Tools</h1>
<p>{slideshare}[slideshare id=6995921&amp;doc=advancefeaturesofsmartbuildandtoolsstudy-110220215438-phpapp02&amp;type=d]{/slideshare}</p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/advance-features-of-smart-build-tools-2/">What are the Advance Features of Smart Build Tools?</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.scmgalaxy.com/tutorials/advance-features-of-smart-build-tools-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Setup Configure Hudson Master Slave? &#8211; Complete Guide</title>
		<link>https://www.scmgalaxy.com/tutorials/hudson-master-slave-setup/</link>
					<comments>https://www.scmgalaxy.com/tutorials/hudson-master-slave-setup/#respond</comments>
		
		<dc:creator><![CDATA[scmgalaxy K]]></dc:creator>
		<pubDate>Sat, 24 Jul 2010 05:09:11 +0000</pubDate>
				<category><![CDATA[Build Tools]]></category>
		<category><![CDATA[Guide]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Hudson master slave configuration]]></category>
		<category><![CDATA[Hudson Master Slave setup]]></category>
		<category><![CDATA[Hudson Master Slave setup Guide]]></category>
		<category><![CDATA[Instructions]]></category>
		<category><![CDATA[Master slave setup]]></category>
		<category><![CDATA[Master/Slave Hudson]]></category>
		<category><![CDATA[Method]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Setup]]></category>
		<category><![CDATA[Slave agents setup method]]></category>
		<category><![CDATA[Slave setup]]></category>
		<category><![CDATA[Steps]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Ways]]></category>
		<guid isPermaLink="false">http://www.scmgalaxy.com/tutorials/2010/07/24/hudson-master-slave-setup/</guid>

					<description><![CDATA[<p>The tasks can be scheduled to run on the same machine (Master), or on a different machine (Slave). A master [&#8230;]</p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/hudson-master-slave-setup/">How to Setup Configure Hudson Master Slave? &#8211; Complete Guide</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div class="date-posts">
<div class="post-outer">
<div class="post hentry">
<div class="post-body entry-content">
<div><img decoding="async" class="alignnone size-full wp-image-4420 aligncenter" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/07/hudson-master-slave-setup.png" alt="hudson-master-slave-setup" width="600" height="400" srcset="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/07/hudson-master-slave-setup.png 600w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/07/hudson-master-slave-setup-300x200.png 300w" sizes="(max-width: 600px) 100vw, 600px" /></div>
<div style="margin-bottom: 0in;">The tasks can be scheduled to run on the same machine (Master), or on a different machine (Slave). A master is a installation of Hudson, that can manage one or more slaves. The role of master remains same in Master slave setup. It serves HTTP requests, and it can still build projects on it&#8217;s own.</div>
<div style="margin-bottom: 0in;">Slaves are computers that are setup to build projects triggered from the master. A separate program called <strong><em>slave agent</em></strong><span style="font-weight: normal;"> runs on slave computer. In this article we&#8217;ll discuss about how to setup Hudson to executed distributed builds using Master slave. One computer can be configured to execute multiple slave agents.</span></div>
<h1 class="western"><span style="font-size: large;">How it works</span></h1>
<div style="margin-bottom: 0in;">When the slaves are registered to a master, the master starts distributing loads to slaves. The delegation depends on the specific job. The job can be configured to either execute on the master, or it can be tied to a specific slave. On the other hand, the jobs can be configured to freely roam between slaves, wherein the job is executed using the free slave. As per the user is concerned, the setup is transparent. The results for all jobs are viewable using the Master, irrespective of the Slave that executed the job.</div>
<div style="margin-bottom: 0in;">The slave may be built using any Operating system. The Master slave setup is highly helpful while the user has to execute the job on different Operating system. Consider this use case: The application is expected to run on different operating system, Linux, Solaris and Windows system. To address this need, the user can install Hudson on any machine, say Linux, and add 2 slaves: Solaris and Windows. The user can add 3 different jobs, one running on Master itself and others running on slave machines.</div>
<h1 class="western"><span style="font-size: large;">Methods to set up Slave agents</span></h1>
<div style="margin-bottom: 0in;">The slave can be launched from Master using any of below methods:</div>
<ol>
<li>Launch Slave agents on Unix machines via SSH.</li>
<li>Launch Slave agents via JNLP.</li>
<li>Launch Slave agents via execution of command on the master.</li>
<li>Let Hudson control windows slave as a windows service.</li>
</ol>
<p>The following screenshot illustrates the list of modes under which the Hudson slave can be launched.<br />
<a style="margin-bottom: 1em; float: right; margin-left: 1em; clear: right;" href="http://3.bp.blogspot.com/_dWL7A18AuFA/S3p7yGMyE4I/AAAAAAAABEo/h6x1l2oCndM/s1600-h/hudson-slave-modes.png"><img loading="lazy" decoding="async" src="http://3.bp.blogspot.com/_dWL7A18AuFA/S3p7yGMyE4I/AAAAAAAABEo/h6x1l2oCndM/s640/hudson-slave-modes.png" width="640" height="51" border="0" /></a></p>
<p><em><span style="font-size: small;"><strong>Set up Slave agents on Unix machines via SSH</strong></span></em></p>
<div><span style="font-weight: normal;">Hudson has a built-in SSH client implementation that it can use to talk to remote sshd and start a slave agent. This is the most convenient and preferred method for Unix slaves, which normally has sshd out-of-the-box. Click </span><em><span style="font-weight: normal;">Manage Hudson</span></em><span style="font-weight: normal;">, then </span><em><span style="font-weight: normal;">Manage Nodes</span></em><span style="font-weight: normal;">, then click </span><em><span style="font-weight: normal;">New Node</span></em><span style="font-weight: normal;">. In this set up, the connection information is supplied, including SSH host name, user name and authentication credentials. The authentication is performed using password or ssh keys. If it is configured to use ssh keys, the SSH public key should be copied to </span><span style="font-family: Courier New, monospace;"><span style="font-weight: normal;">~/.ssh/authorized_keys</span></span><span style="font-weight: normal;"> file. Hudson will do the rest of the work by itself, including copying the binary needed for a slave agent, and starting/stopping slaves.</span></div>
<p>&nbsp;</p>
<blockquote>
<div style="text-align: justify;">Depending on the project and hardware resource availability, the user Desktop can be used as one of Slave, without affecting his day-to-day activities, thus avoiding the need for dedicated Slaves.</div>
</blockquote>
<h2 class="western"><em><span style="font-size: small;"><strong>Establish slave agent via Java Web Start</strong></span></em></h2>
<div style="font-weight: normal;">Another way of launching slave is to start a slave agent through Java Web Start (JNLP). In this approach, the user will login to the slave node, open a browser and open the slave page using the URL pointed to the Master. It may look like the following URL:</div>
<div style="font-weight: normal;"><span style="font-family: Courier New, monospace;">http://masterserver:port/hudson/jnlpJars/slave.jar</span></div>
<div style="font-weight: normal;">The user is presented with the JNLP launch icon. If user click the icon, the Java Web Start kicks in and it launches a slave agent on this computer.</div>
<div style="font-weight: normal;">This mode is convenient when the master cannot initiate a connection to slaves, such as when it runs outside a firewall while the rest of the slaves are in the firewall. The disadvantage is, if the machine with a slave agent goes down, the master has no way of re-launching it on its own.</div>
<h3 class="western"><em><span style="font-size: small;">Set up slave agent headlessly</span></em></h3>
<div style="margin-bottom: 0in; font-weight: normal;">This launch mode uses a mechanism very similar to Java Web Start, except that it runs without using GUI, making it convenient for an execution as a daemon on Unix. To do this, the user should configure this slave to be a JNLP slave by downloading <tt><span style="font-family: Courier New, monospace;"><em>slave.jar</em></span></tt>, and then from the slave, run a command like this:</div>
<pre style="font-weight: normal;"><span style="font-family: Courier New, monospace;"> </span></pre>
<pre style="font-weight: normal;"><span style="font-family: Courier New, monospace;">java -jar slave.jar -jnlpUrl http://yourserver:port/computer/slave-name/slave-agent.jnlp</span></pre>
<div style="margin-bottom: 0in; font-weight: normal;">
<p>The <span style="font-family: Courier New, monospace;">slave.jar</span> file is downloaded from the above mentioned URL. Make sure to replace <strong>slave-name</strong> with the name of the slave setup in Master.</p>
<blockquote><p>By default, Hudson runs on port 8080. It can be installed and managed without the need for super user privilege. The super user privilege is not required to manage both Master and Slave.</p></blockquote>
</div>
<p>The below diagram illustrates the list of configuration parameters specific to a slave.</p>
<div class="separator" style="text-align: center; clear: both;"><a style="margin-bottom: 1em; float: right; margin-left: 1em; clear: right;" href="http://3.bp.blogspot.com/_dWL7A18AuFA/S3qBFN_G-CI/AAAAAAAABEw/GYdxfv2w__4/s1600-h/hudson-slave-2.png"><img loading="lazy" decoding="async" src="http://3.bp.blogspot.com/_dWL7A18AuFA/S3qBFN_G-CI/AAAAAAAABEw/GYdxfv2w__4/s400/hudson-slave-2.png" width="400" height="176" border="0" /></a></div>
<p>&nbsp;</p>
<h2 class="western"><em><span style="font-size: small;">set up Slave Agent using own scripts</span></em></h2>
<div>If the above modes is not flexible, the user can write his own script to launch the Slave agent. The script is placed in the Master computer and Hudson runs this script whenever it should connect to the slave. The script may use the remote login program like SSH, RSH to establish connection between Master and slave.</div>
<div>The script would execute the slave agent program like <span style="font-family: Courier New, monospace;">java -jar slave.jar. </span><span style="font-family: Times New Roman, serif;">The stdin and stdout for the script should be connected to the master. For example, the script that does </span><span style="font-family: Courier New, monospace;">ssh myslave java -jar ~/bin/slave.jar</span><span style="font-family: Times New Roman, serif;"> would satisfy this need, when it is executed from the Master web interface. For this reason, running this script manually from the command line does no good.</span></div>
<div style="font-family: Arial, Helvetica, sans-serif;">The copy of slave.jar can be downloaded from the above mentioned URL. Launching the slave agent using this mode requires additional setup in the Slave. The benefit is that when the connection goes bad, the user can use Hudson web interface to re-establish the connection. <!-- BLOG_CMT_createIframe('http://www.blogger.com/rpc_relay.html', '12285068873195078521'); // --></div>
</div>
</div>
</div>
</div>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/hudson-master-slave-setup/">How to Setup Configure Hudson Master Slave? &#8211; Complete Guide</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.scmgalaxy.com/tutorials/hudson-master-slave-setup/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Project Object Model &#8211; What is POM?</title>
		<link>https://www.scmgalaxy.com/tutorials/what-is-pom/</link>
					<comments>https://www.scmgalaxy.com/tutorials/what-is-pom/#respond</comments>
		
		<dc:creator><![CDATA[scmgalaxy K]]></dc:creator>
		<pubDate>Wed, 14 Apr 2010 11:04:22 +0000</pubDate>
				<category><![CDATA[Build Tools]]></category>
		<category><![CDATA[About POM]]></category>
		<category><![CDATA[Minimal POM]]></category>
		<category><![CDATA[POM]]></category>
		<category><![CDATA[POM Guide]]></category>
		<category><![CDATA[POM in Maven]]></category>
		<category><![CDATA[POM Introduction]]></category>
		<category><![CDATA[POM Overview]]></category>
		<category><![CDATA[project]]></category>
		<category><![CDATA[Project inheritance]]></category>
		<category><![CDATA[Project Object Model]]></category>
		<category><![CDATA[Start]]></category>
		<category><![CDATA[Super POM]]></category>
		<category><![CDATA[What is POM]]></category>
		<guid isPermaLink="false">http://www.scmgalaxy.com/tutorials/2010/04/14/what-is-pom/</guid>

					<description><![CDATA[<p>What is POM A Project Object Model or POM is the fundamental unit of work in Maven. It is an [&#8230;]</p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/what-is-pom/">Project Object Model &#8211; What is POM?</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-4279" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/04/pom.png" alt="pom" width="600" height="400" srcset="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/04/pom.png 600w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/04/pom-300x200.png 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /></p>
<p><b>What is POM</b><br />
A Project Object Model or POM is the fundamental unit of work in Maven. It is an XML file that contains information about the project and configuration details used by Maven to build the project. It contains default values for most projects. Examples for this are the build directory, which is target; the source directory, which is src/main/java; the test source directory, which is src/main/test; and so on.<br />
The POM was renamed from project.xml in Maven 1 to pom.xml in Maven 2. When executing a task or goal, Maven looks for the POM in the current directory. It reads the POM, gets the needed configuration information, then executes the goal.<br />
Some of the configuration that can be specified in the POM are the project dependencies, the plugins or goals that can be executed, the build profiles, and so on. Other information such as the project version, description, developers, mailing lists and such can also be specified.</p>
<p><b>Super POM</b><br />
The Super POM is Maven&#8217;s default POM. All POMs extend the Super POM unless explicitly set, meaning the configuration specified in the Super POM is inherited by the POMs you created for your projects. The snippet below is the Super POM for Maven 2.0.x.<br />
The snippet below is the Super POM for Maven 2.0.x.<br />
4.0.0<br />
Maven Default Project</p>
<p>central<br />
Maven Repository Switchboard<br />
default<br />
http://repo1.maven.org/maven2</p>
<p>false</p>
<p>central<br />
Maven Plugin Repository<br />
http://repo1.maven.org/maven2<br />
default</p>
<p>false</p>
<p>never</p>
<p>target<br />
target/classes<br />
${artifactId}-${version}<br />
target/test-classes<br />
src/main/java<br />
src/main/scripts<br />
src/test/java</p>
<p>src/main/resources</p>
<p>src/test/resources</p>
<p>target/site<br />
release-profile</p>
<p>performRelease</p>
<p>true<br />
org.apache.maven.plugins<br />
maven-source-plugin</p>
<p>attach-sources</p>
<p>jar</p>
<p>true<br />
org.apache.maven.plugins<br />
maven-javadoc-plugin</p>
<p>attach-javadocs</p>
<p>jar</p>
<p>true<br />
org.apache.maven.plugins<br />
maven-deploy-plugin</p>
<p>true</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a id="Minimal_POM" class="mceItemAnchor" name="Minimal_POM"></a><b>Minimal POM</b><b> </b><br />
The minimum requirement for a POM are the following:</p>
<ul type="disc">
<li>project root</li>
<li>modelVersion &#8211; should be set to 4.0.0</li>
<li>groupId &#8211; the id of the project&#8217;s group.</li>
<li>artifactId &#8211; the id of the artifact (project)</li>
<li>version &#8211; the version of the artifact under the specified group</li>
</ul>
<p>Here&#8217;s an example:</p>
<pre></pre>
<pre>  4.0.0</pre>
<pre>  com.mycompany.app</pre>
<pre>  my-app</pre>
<pre>  1</pre>
<pre></pre>
<p>A POM requires that its groupId, artifactId, and version be configured. These three values form the project&#8217;s fully qualified artifact name. This is in the form of ::. As for the example above, its fully qualified artifact name is &#8220;com.mycompany.app:my-app:1&#8221;.<br />
Every Maven project has a packaging type. If it is not specified in the POM, then the default value &#8220;jar&#8221; would be used.<br />
<b>Project inheritance</b><br />
Elements in the POM that are merged are the following:</p>
<ul type="disc">
<li>dependencies</li>
<li>developers and contributors</li>
<li>plugin lists (including reports)</li>
<li>plugin executions with matching ids</li>
<li>plugin configuration</li>
<li>resources</li>
</ul>
<p>The Super POM is one example of project inheritance, however you can also introduce your own parent POMs by specifying the parent element in the POM, as demonstrated in the following examples.</p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/what-is-pom/">Project Object Model &#8211; What is POM?</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.scmgalaxy.com/tutorials/what-is-pom/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Advance Features of Smart Build Tools</title>
		<link>https://www.scmgalaxy.com/tutorials/advance-features-of-smart-build-tools/</link>
					<comments>https://www.scmgalaxy.com/tutorials/advance-features-of-smart-build-tools/#respond</comments>
		
		<dc:creator><![CDATA[scmgalaxy K]]></dc:creator>
		<pubDate>Thu, 25 Feb 2010 09:53:55 +0000</pubDate>
				<category><![CDATA[Build Tools]]></category>
		<category><![CDATA[Advance Features]]></category>
		<category><![CDATA[analysis]]></category>
		<category><![CDATA[AnthillPro Review]]></category>
		<category><![CDATA[Bamboo Review]]></category>
		<category><![CDATA[Comparison]]></category>
		<category><![CDATA[Difference]]></category>
		<category><![CDATA[Electric Cloud Review]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[Features Comparison]]></category>
		<category><![CDATA[Features of Smart Build Tools]]></category>
		<category><![CDATA[OpenMake Review]]></category>
		<category><![CDATA[Smart Build]]></category>
		<category><![CDATA[Smart Build Tools]]></category>
		<category><![CDATA[Smart Build Tools Advance Features]]></category>
		<category><![CDATA[Smart Build Tools Advantages]]></category>
		<category><![CDATA[Smart Build Tools Benefits]]></category>
		<category><![CDATA[Smart Build Tools Features]]></category>
		<category><![CDATA[Smart Build Tools Functionality]]></category>
		<category><![CDATA[Smart Build Tools Quality]]></category>
		<category><![CDATA[TeamCity Review]]></category>
		<guid isPermaLink="false">http://www.scmgalaxy.com/tutorials/2010/02/25/advance-features-of-smart-build-tools/</guid>

					<description><![CDATA[<p>Table of Contents Agile Development Challenges Deployment Challenges Build Acceleration Challenges Integration with Elastic and Cloud Computing Workflow Management Reference: [&#8230;]</p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/advance-features-of-smart-build-tools/">Advance Features of Smart Build Tools</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-4157 aligncenter" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/smart-build-tools-features.png" alt="smart-build-tools-features" width="600" height="400" srcset="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/smart-build-tools-features.png 600w, https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/smart-build-tools-features-300x200.png 300w" sizes="auto, (max-width: 600px) 100vw, 600px" /></p>
<p><b>Table of Contents</b><br />
<a href="#_Toc254290039">Agile Development Challenges</a><br />
<a href="#_Toc254290040">Deployment Challenges</a><br />
<a href="#_Toc254290041">Build Acceleration Challenges</a><br />
<a href="#_Toc254290042">Integration with Elastic and Cloud Computing</a><br />
<a href="#_Toc254290043">Workflow Management</a><br />
<a href="#_Toc254290044">Reference:</a></p>
<p>&nbsp;</p>
<h2><a class="mceItemAnchor" name="_Toc254290039"></a>Agile Development Challenges</h2>
<p>Two of the core principles of agile development are: &#8220;deliver working code frequently&#8221; and &#8220;working software is the primary measure of progress.&#8221; More and more teams, from ISVs to enterprise IT groups, are recognizing the quality and productivity benefits of integrating early and often. Whether you want to just build and test more frequently or implement a comprehensive agile process, you&#8217;ll need to ensure that your build and test process is:</p>
<ul type="disc">
<li>fast</li>
<li>automated (not requiring manual intervention)</li>
<li>reliable (broken builds are the enemy of an agile approach)</li>
</ul>
<p>Addressing the build-test-deploy process is one of the best first steps toward an agile development model.</p>
<table border="1" width="645" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="41%"><b>Agile Development  Challenge</b></td>
<td valign="top">
<p align="center"><b><img loading="lazy" decoding="async" class=" size-full wp-image-162 size-full wp-image-163 size-full wp-image-164 size-full wp-image-165 size-full wp-image-166 size-full wp-image-167 size-full wp-image-168 size-full wp-image-169 size-full wp-image-170 size-full wp-image-171 size-full wp-image-172 size-full wp-image-173 size-full wp-image-174 size-full wp-image-175 size-full wp-image-176 size-full wp-image-177 size-full wp-image-178 size-full wp-image-179 size-full wp-image-180 size-full wp-image-181" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image001_0010.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="1" height="1" /></b><b> </b></p>
</td>
<td valign="top">
<p align="center"><b><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image002.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="5" height="1" /></b><b> </b></p>
</td>
<td valign="top" width="41%">
<p align="center"><b>Impact</b></p>
</td>
<td valign="top"><b><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image003.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="10" height="1" /></b><b> </b></td>
<td valign="top"><b><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image001_0011.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="1" height="1" /></b><b> </b></td>
<td valign="top"><b><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image002_0000.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="5" height="1" /></b><b> </b></td>
</tr>
<tr>
<td valign="top"><b>Builds require manual intervention</b></td>
<td valign="top"><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image001_0012.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="1" height="1" /></td>
<td valign="top"><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image001_0013.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="1" height="1" /></td>
<td valign="top">Integrating often will overwhelm a manual build process</td>
<td valign="top"><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image001_0014.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="1" height="1" /></td>
<td valign="top"><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image001_0015.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="1" height="1" /></td>
<td valign="top"><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image001_0016.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="1" height="1" /></td>
</tr>
<tr>
<td valign="top"><b>Slow build cycle (whether long individual builds or a large number of build targets)</b></td>
<td valign="top"><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image001_0017.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="1" height="1" /></td>
<td valign="top"><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image001_0018.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="1" height="1" /></td>
<td valign="top">Long builds limit the number of iterations possible in a day<br />
Builds longer than ~30 minutes rule out Continuous Integration</td>
<td valign="top"><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image001_0019.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="1" height="1" /></td>
<td valign="top"><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image001_0020.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="1" height="1" /></td>
<td valign="top"><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image001_0021.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="1" height="1" /></td>
</tr>
<tr>
<td valign="top"><b>Developers introducing errors during integration or production builds</b></td>
<td valign="top"><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image001_0022.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="1" height="1" /></td>
<td valign="top"><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image001_0023.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="1" height="1" /></td>
<td valign="top">If developers can&#8217;t do preflight builds and tests on all targets/platforms prior to check-in, Continuous Integration can turn into Continuously Broken Builds</td>
<td valign="top"><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image001_0024.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="1" height="1" /></td>
<td valign="top"><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image001_0025.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="1" height="1" /></td>
<td valign="top"><img loading="lazy" decoding="async" src="https://www.scmgalaxy.com/tutorials/wp-content/uploads/2010/02/clip_image001_0026.gif" alt="http://electric-cloud.com/images/common/spacer.gif" width="1" height="1" /></td>
</tr>
</tbody>
</table>
<h2><a class="mceItemAnchor" name="_Toc254290040"></a>Deployment Challenges</h2>
<p>Deployment of a real world application is a complex, and all-too-often, a manual process. The complexity comes from the fact that the application may need to be deployed to any number of environments: Development (DEV), Quality Assurance (QA), User Acceptance Testing (UAT), Pre-production (STAGE), and Production (PROD). Each of these environments is typically slightly different requiring different accounts, password, and setting and thus it may seem like manual intervention is required.<br />
Complicating matters is the fact that today&#8217;s business applications comprise multiple moving parts that all need to be synchronized and deployed together. For example, a typical J2EE application can be made up of an EAR file, database changes, some static content, and environment changes (such as JDBC connection pools, Message Queues, etc.). Making sure that all these pieces get deployed on the correct machines and in the correct order can feel like a daunting task, especially if you need to repeat it for each environment. Keep in mind that each environment may have a different number of database servers, application server, HTTP server, etc.</p>
<h2><a class="mceItemAnchor" name="_Toc254290041"></a>Build Acceleration Challenges</h2>
<p>Slow software build cycles are more than just an annoyance. Whether you have long monolithic builds or a large number of smaller builds that take a long time, they are having a real impact on your development organization.</p>
<ul type="disc">
<li><b>Wasted time, frustration waiting for builds</b></li>
<li><b>Fixing broken builds delays testing</b></li>
<li><b>Fewer bugs fixed, fewer features added</b></li>
<li><b>Developers avoid builds</b></li>
<li><b>QA may skip tests to meet deadlines</b></li>
</ul>
<p>A recent survey of more than 350 development professionals found that 68% reported broken builds at least a few times per month (and often weekly), and fixing those typically wasted 2 weeks per year. The majority said their builds were each more than 1 hour long, with 24% reporting builds of 2-4 hours, which translates to time not spent creating great software.</p>
<h2><a class="mceItemAnchor" name="_Toc254290042"></a>Integration with Elastic and Cloud Computing</h2>
<p>In a large infrastructure with many projects, the CI server often experiences variable task loads with unpredictable load peaks (such as during releases). In an environment with fixed resources, this leads to build queue growths, increased build times, and poor build scheduling control.<br />
Computing clouds such as Amazon EC2 provide a nice and efficient way to scale resources to fulfill variable demands with random load spikes. Such rapid demand growths is exactly what happens in Build Server during CI &#8220;rush hours,&#8221; when everyone starts personal builds before going home, and also during pre-release days, when every new fix needs another round of unit tests, and build feedback time becomes mission-critical.<br />
Build Server utilizes EC2 via virtual build agents. Virtual build agents are similar to standard ones, except that they run on virtual instances on the Amazon EC2. This means that Build Server is able to dynamically start as many instances of such agents as needed, in order to keep the build queue under control under high loads. Additionally, Build Server can shut down virtual build agents when they are not needed anymore, to minimize EC2 instances uptime.<br />
While being a great solution for mitigating peak loads and maintaining constant build feedback time, Amazon EC2 integration also provides great cost optimization opportunities, as each resource accumulates costs only while in use.</p>
<h2><a class="mceItemAnchor" name="_Toc254290043"></a>Workflow Management</h2>
<p>In recent years, build management solutions have provided even more relief when it comes to automating the build process. Both commercial and open source solutions are available to perform more automated build and workflow processing. Some solutions focus on automating the pre and post steps around the calling of the build scripts, while others go beyond the pre and post build script processing and drive down into streamlining the actual compile and linker calls without much manual scripting.</p>
<h2>Tools Comparison</h2>
<p>&nbsp;</p>
<table border="1" width="653" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="136"><b> </b></td>
<td valign="top" width="104"><b>OpenMake</b></td>
<td valign="top" width="86"><b>Bamboo</b></td>
<td valign="top" width="99"><b>AnthillPro</b></td>
<td valign="top" width="93"><b>TeamCity</b></td>
<td valign="top" width="134"><b>Electric Cloud</b></td>
</tr>
<tr>
<td valign="top" width="136"><b>Agile Support </b></td>
<td valign="top" width="104">YES</td>
<td valign="top" width="86">YES</td>
<td valign="top" width="99">YES</td>
<td valign="top" width="93">YES</td>
<td valign="top" width="134">YES</td>
</tr>
<tr>
<td valign="top" width="136"><b>Deployment</b></td>
<td valign="top" width="104">YES</td>
<td valign="top" width="86"><b>NO</b></td>
<td valign="top" width="99">YES</td>
<td valign="top" width="93"><b>No</b></td>
<td valign="top" width="134">YES</td>
</tr>
<tr>
<td valign="top" width="136"><b>Remote Agent </b></td>
<td valign="top" width="104">YES</td>
<td valign="top" width="86">YES</td>
<td valign="top" width="99">YES</td>
<td valign="top" width="93">YES</td>
<td valign="top" width="134">YES</td>
</tr>
<tr>
<td valign="top" width="136"><b>Cloud &#8211; Elastic</b></td>
<td valign="top" width="104"><b>NO</b></td>
<td valign="top" width="86">YES</td>
<td valign="top" width="99"><b>No</b></td>
<td valign="top" width="93">YES</td>
<td valign="top" width="134">YES</td>
</tr>
<tr>
<td valign="top" width="136"><b>WorkFlow Mgmt</b></td>
<td valign="top" width="104">YES</td>
<td valign="top" width="86"><b>YES &#8211; Limited</b></td>
<td valign="top" width="99">YES</td>
<td valign="top" width="93"><b>YES &#8211; Limited</b></td>
<td valign="top" width="134"><b>YES, Limited</b></td>
</tr>
<tr>
<td valign="top" width="136"><b> </b></td>
<td valign="top" width="104">&nbsp;</td>
<td valign="top" width="86">&nbsp;</td>
<td valign="top" width="99">&nbsp;</td>
<td valign="top" width="93">&nbsp;</td>
<td valign="top" width="134">&nbsp;</td>
</tr>
</tbody>
</table>
<h2><a class="mceItemAnchor" name="_Toc254290044"></a></h2>
<h2>Reference:</h2>
<p><a href="http://www.electric-cloud.com">http://www.electric-cloud.com</a><br />
<a href="http://www.anthillpro.com">www.anthillpro.com</a><br />
<a href="http://www.atlassian.com">http://www.atlassian.com</a><br />
<a href="http://www.jetbrains.com/teamcity">www.jetbrains.com/teamcity</a><b> </b><br />
<a href="http://www.openmakesoftware.com">http://www.openmakesoftware.com</a></p>
<p>The post <a href="https://www.scmgalaxy.com/tutorials/advance-features-of-smart-build-tools/">Advance Features of Smart Build Tools</a> appeared first on <a href="https://www.scmgalaxy.com/tutorials">scmGalaxy</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.scmgalaxy.com/tutorials/advance-features-of-smart-build-tools/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
