<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
				<meta name="keywords" content="SMILA/Documentation/HowTo/Create a bundle (plug-in),SMILA/Development Guidelines/Create a test bundle (plug-in),SMILA/Development Guidelines/How to integrate new bundle into build process" />
		<link rel="shortcut icon" href="http://wiki.eclipse.org/SMILA/Documentation/HowTo/favicon.ico" />
		<link rel="search" type="application/opensearchdescription+xml" href="http://wiki.eclipse.org/opensearch_desc.php" title="Eclipsepedia (English)" />
<link rel="alternate" type="application/rss+xml" title="Eclipsepedia RSS Feed" href="http://wiki.eclipse.org/index.php?title=Special:Recentchanges&amp;feed=rss" />
<link rel="alternate" type="application/atom+xml" title="Eclipsepedia Atom Feed" href="http://wiki.eclipse.org/index.php?title=Special:Recentchanges&amp;feed=atom" />
	
		
		<title>SMILA/Documentation/HowTo/Create a bundle (plug-in) - Eclipsepedia</title>

		<style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "http://wiki.eclipse.org/skins/eclipsenova/novaWide.css?116"; /*]]>*/</style>
		<link rel="stylesheet" type="text/css" media="print" href="http://wiki.eclipse.org/skins/eclipsenova/eclipsenovaPrint.css?116" />
		<link rel="stylesheet" type="text/css" media="handheld" href="http://wiki.eclipse.org/skins/eclipsenova/handheld.css?116" />
		<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/header.css" media="screen" />
		<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/tabs.css" media="screen" />
		<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/visual.css" media="screen" />
		<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/layout.css" media="screen" />
		<link rel="stylesheet" type="text/css" href="http://wiki.eclipse.org/skins/eclipsenova/Nova/css/footer.css" media="screen" />
	        <!--[if IE]><link rel="stylesheet" type="text/css" href="/skins/eclipsenova/IEpngfix.css" media="screen" /><![endif]-->
		<!--[if lt IE 5.5000]><style type="text/css">@import "/skins/eclipsenova/IE50Fixes.css?116";</style> <![endif]-->
		<!--[if IE 5.5000]><style type="text/css">@import "/skins/eclipsenova/IE55Fixes.css?116";</style><![endif]-->
		<!--[if IE 6]><style type="text/css">@import "/skins/eclipsenova/IE60Fixes.css?116";</style><![endif]-->
		<!--[if IE 7]><style type="text/css">@import "/skins/eclipsenova/IE70Fixes.css?116";</style><![endif]-->
		<!--[if lt IE 7]><script type="text/javascript" src="/skins/common/IEFixes.js?116"></script>
		<meta http-equiv="imagetoolbar" content="no" /><![endif]-->
		<script type= "text/javascript">/*<![CDATA[*/
var skin = "eclipsenova";
var stylepath = "/skins";
var wgArticlePath = "/$1";
var wgScriptPath = "";
var wgScript = "/index.php";
var wgServer = "http://wiki.eclipse.org";
var wgCanonicalNamespace = "";
var wgCanonicalSpecialPageName = false;
var wgNamespaceNumber = 0;
var wgPageName = "SMILA/Documentation/HowTo/Create_a_bundle_(plug-in)";
var wgTitle = "SMILA/Documentation/HowTo/Create a bundle (plug-in)";
var wgAction = "view";
var wgRestrictionEdit = [];
var wgRestrictionMove = [];
var wgArticleId = "15384";
var wgIsArticle = true;
var wgUserName = null;
var wgUserGroups = null;
var wgUserLanguage = "en";
var wgContentLanguage = "en";
var wgBreakFrames = false;
var wgCurRevisionId = "308474";
var wgVersion = "1.12.0";
var wgEnableAPI = true;
var wgEnableWriteAPI = false;
/*]]>*/</script>
                
		<script type="text/javascript" src="http://wiki.eclipse.org/skins/common/wikibits.js?116"><!-- wikibits js --></script>

<!-- Performance mods similar to those for bug 166401 -->
		<script type="text/javascript" src="http://wiki.eclipse.org/index.php?title=-&amp;action=raw&amp;gen=js&amp;useskin=eclipsenova"><!-- site js --></script>

		<!-- Head Scripts -->
				<script type="text/javascript" src="http://wiki.eclipse.org/skins/common/ajax.js?116"></script>
<link rel="stylesheet" type="text/css" href="Create_a_bundle_(plug-in).html" />	</head>
<body  class="mediawiki ns-0 ltr page-SMILA_Documentation_HowTo_Create_a_bundle_plug-in">
	<div id="globalWrapper">


		<div id="column-one">
<!-- Eclipse Additions for the Top Nav start here M. Ward-->

		      <div id="header">
               <div id="header-graphic">
                 <img src="http://wiki.eclipse.org/skins/eclipsenova/eclipse.png" alt="Eclipse Wiki">
               </div>
<!-- Pulled 101409 Mward	   -->
            
            <div class="portlet" id="p-personal">
              <div class="pBody">
              <ul>
                <li id="pt-login"><a href="http://wiki.eclipse.org/index.php?title=Special:Userlogin&amp;returnto=SMILA/Documentation/HowTo/Create_a_bundle_(plug-in)">Log in</a></li>
                      </ul>
              </div>
            </div>

            <div id="header-icons">
	      <div id="sites">
              <ul id="sitesUL">
                <li><a href="http://www.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/eclipseIcon.png" width="28" height="28" alt="Eclipse Foundation" title="Eclipse Foundation" /><div>Eclipse Foundation</div></a></li>
                <li><a href="http://marketplace.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/marketplace.png" width="28" height="28" alt="Eclipse Marketplace" title="Eclipse Marketplace" /><div>Eclipse Marketplace</div></a></li>
                <li><a href="https://bugs.eclipse.org/bugs"><img src="http://dev.eclipse.org/custom_icons/system-search-bw.png" width="28" height="28" alt="Bugzilla" title="Bugzilla" /><div>Bugzilla</div></a></li>
                <li><a href="http://live.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/audio-input-microphone-bw.png" width="28" height="28" alt="Live" title="Live" /><div>Eclipse Live</div></a></li>
                <li><a href="http://planeteclipse.org"><img src="http://dev.eclipse.org/large_icons/devices/audio-card.png" width="28" height="28" alt="PlanetEclipse" title="Planet" /><div>Planet Eclipse</div></a></li>
                <li><a href="http://portal.eclipse.org"><img src="http://dev.eclipse.org/custom_icons/preferences-system-network-proxy-bw.png" width="28" height="28" alt="Portal" title="Portal" /><div>My Foundation Portal</div></a></li>
              </ul>
              </div>
            </div>
        </div> 
<!-- NEW HEADER STUFF HERE -->
       <div id="header-menu">
         <div id="header-nav">
               <ul> 		 <li><a class="first_one" href="http://wiki.eclipse.org/" target="_self">Home</a></li>                  <li><a  href="http://www.eclipse.org/downloads/" target="_self">Downloads</a></li> 
                 <li><a  href="http://www.eclipse.org/users/" target="_self">Users</a></li> 
                 <li><a  href="http://www.eclipse.org/membership/" target="_self">Members</a></li> 
                 <li><a  href="http://wiki.eclipse.org/index.php/Development_Resources" target="_self">Committers</a></li> 
                 <li><a  href="http://www.eclipse.org/resources/" target="_self">Resources</a></li> 
                 <li><a  href="http://www.eclipse.org/projects/" target="_self">Projects</a></li> 
                 <li><a  href="http://www.eclipse.org/org/" target="_self">About Us</a></li> 
                </ul>
         </div>
         <div id="header-utils">
<!-- moved the search window here -->
                           <form action="http://wiki.eclipse.org/Special:Search" >
                  <input class="input" name="search" type="text" accesskey="f" value="" />
                    <input type='submit' onclick="this.submit();" name="go" id="searchGoButton" class="button" title="Go to a page with this exact name if one exists" value="Go" />&nbsp;
                    <input type='submit' onclick="this.submit();" name="fulltext" class="button" id="mw-searchButton" title="Search Eclipsepedia for this text"  value="Search" />
                </form>
		 </div>
      </div>


<!-- Eclipse Additions for the Header stop here -->
<!-- Additions and mods for leftside nav Start here -->

<!--Started nav  rip here-->
<!-- these are the nav controls main page, changes etc -->
    <div id="novaContent" class="faux">
            <div id="leftcol">
          <ul id="leftnav">
<!-- these are the page controls, edit history etc -->
            	  <li class="separator"><a class="separator">Navigation &#160;&#160;</li>
                                <li id="n-mainpage"><a href="http://wiki.eclipse.org/Main_Page">Main Page</a></li>
	                                <li id="n-portal"><a href="http://wiki.eclipse.org/Eclipsepedia:Community_Portal">Community portal</a></li>
	                                <li id="n-currentevents"><a href="http://wiki.eclipse.org/Eclipsepedia:Current_events">Current events</a></li>
	                                <li id="n-recentchanges"><a href="http://wiki.eclipse.org/Special:Recentchanges">Recent changes</a></li>
	                                <li id="n-randompage"><a href="http://wiki.eclipse.org/Special:Random">Random page</a></li>
	                                <li id="n-help"><a href="http://wiki.eclipse.org/Help:Contents">Help</a></li>
		  <li class="separator"><a class="separator">Toolbox &#160;&#160;</a></li>

				<li id="t-whatlinkshere"><a href="http://wiki.eclipse.org/Special:Whatlinkshere/SMILA/Documentation/HowTo/Create_a_bundle_%28plug-in%29">What links here</a></li>
				<li id="t-recentchangeslinked"><a href="http://wiki.eclipse.org/Special:Recentchangeslinked/SMILA/Documentation/HowTo/Create_a_bundle_%28plug-in%29">Related changes</a></li>
                <!-- This is the toolbox section -->
<li id="t-upload"><a href="http://wiki.eclipse.org/Special:Upload">Upload file</a></li>
<li id="t-specialpages"><a href="http://wiki.eclipse.org/Special:Specialpages">Special pages</a></li>
				<li id="t-print"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/HowTo/Create_a_bundle_%28plug-in%29&amp;printable=yes">Printable version</a></li>				<li id="t-permalink"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/HowTo/Create_a_bundle_%28plug-in%29&amp;oldid=308474">Permanent link</a></li>	  </ul>
        </div>


<!-- Additions and mods for leftside nav End here -->


  <div id="column-content">
    <div id="content">
      <a name="top" id="top"></a>

              <div id="tabs">
         <ul class="primary">
                                         <li class="active"><a href="Create_a_bundle_(plug-in).html"><span class="tab">Page</span></a></li>
                                                         <li><a href="http://wiki.eclipse.org/index.php?title=Talk:SMILA/Documentation/HowTo/Create_a_bundle_%28plug-in%29&amp;action=edit"><span class="tab">Discussion</span></a></li>
                                         <li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/HowTo/Create_a_bundle_%28plug-in%29&amp;action=edit"><span class="tab">View source</span></a></li>
                                         <li><a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/HowTo/Create_a_bundle_%28plug-in%29&amp;action=history"><span class="tab">History</span></a></li>
                                         <li><a href="http://wiki.eclipse.org/index.php?title=Special:Userlogin&amp;returnto=SMILA/Documentation/HowTo/Create&#32;a&#32;bundle&#32;(plug-in)"><span class="tab">Edit</span></a></li>
                  </ul>
        </div>


          <script type="text/javascript"> if (window.isMSIE55) fixalpha(); </script>
            <h1 class="firstHeading">SMILA/Documentation/HowTo/Create a bundle (plug-in)</h1>
      <div id="bodyContent">
        <h3 id="siteSub">From Eclipsepedia</h3>
        <div id="contentSub"><span class="subpages">&lt; <a href="../../../SMILA.html" title="SMILA">SMILA</a> | <a href="../../Documentation.1.html" title="SMILA/Documentation">Documentation</a> | <a href="../HowTo.html" title="SMILA/Documentation/HowTo">HowTo</a></span></div>
                              <div id="jump-to-nav">Jump to: <a href="Create_a_bundle_(plug-in).html#column-one">navigation</a>, <a href="Create_a_bundle_(plug-in).html#searchInput">search</a></div>          <!-- start content -->
          <p>This page describes how to create a new bundle for SMILA.The description on how to add a test bundle to test the components of the new bundle can be found in <a href="../../Development_Guidelines/Create_a_test_bundle_(plug-in).html" class="mw-redirect" title="SMILA/Development Guidelines/Create a test bundle (plug-in)">How to create a test bundle (plug-in)</a>. 
</p>
<table id="toc" class="toc" summary="Contents"><tr><td><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1"><a href="Create_a_bundle_(plug-in).html#Create_the_bundle"><span class="tocnumber">1</span> <span class="toctext">Create the bundle</span></a></li>
<li class="toclevel-1"><a href="Create_a_bundle_(plug-in).html#Check_the_result"><span class="tocnumber">2</span> <span class="toctext">Check the result</span></a></li>
<li class="toclevel-1"><a href="Create_a_bundle_(plug-in).html#Add_bundle_to_launch_configuraton"><span class="tocnumber">3</span> <span class="toctext">Add bundle to launch configuraton</span></a></li>
<li class="toclevel-1"><a href="Create_a_bundle_(plug-in).html#Create_a_Working_Set"><span class="tocnumber">4</span> <span class="toctext">Create a Working Set</span></a></li>
<li class="toclevel-1"><a href="Create_a_bundle_(plug-in).html#Integrating_the_new_bundle_in_the_build_process"><span class="tocnumber">5</span> <span class="toctext">Integrating the new bundle in the build process</span></a></li>
</ul>
</td></tr></table><script type="text/javascript"> if (window.showTocToggle) { var tocShowText = "show"; var tocHideText = "hide"; showTocToggle(); } </script>
<a name="Create_the_bundle"></a><h2> <span class="mw-headline"> Create the bundle  </span></h2>
<p>The following steps must be performed to create the project base: 
</p>
<ol><li>Launch Eclipse and select your SMILA workspace. 
</li><li>Select&nbsp;<i>File &gt; New &gt; Project</i> and click <i>Plug-in Project</i>. 
</li><li>Click <i>Next</i>. <br />Now you have to fill in various metadata and settings for your plug-in project. You may as well edit some of the settings later on by opening the <tt>MANIFEST.MF</tt> with the <i>Plug-in Manifest</i> editor. 
</li><li>Enter a project name (you should use a fully qualified name, for this example we will use <tt>org.eclipse.smila.integration.bundle</tt>). 
</li><li>Add <tt>code</tt> as a parent to the source and output folder: 
<ul><li>Set <i>Source folder</i> to <tt>code/src</tt>. 
</li><li>Set <i>Output folder</i> to <tt>code/bin</tt>. 
</li></ul>
</li><li>Set <i>Target Platform</i> to <tt>an OSGi framework: Equinox</tt>. 
</li><li>Click <i>Next</i>. 
</li><li>Fill in the metadata information of the new bundle. Set the plug-in's name as ID, your bundle's version, a reasonable bundle name and the information about the provider (i.e. you). For our example we select: 
<ul><li>ID: <tt>org.eclipse.smila.example.bundle</tt> 
</li><li>Version: <tt>1.1.0.qualifier</tt> 
</li><li>Name: <tt>Example Bundle Plugin</tt> 
</li><li>Provider: <tt>Eclipse RT SMILA project</tt> 
</li><li>Exection Environment: <tt>JavaSE-1.6</tt> 
</li></ul>
</li><li>Unless you need an activator, uncheck this option. 
</li><li>Click <i>Next</i>. 
</li><li>Unless you want to use any of the given templates to create your plugin, uncheck the option. 
</li><li>Click <i>Finish</i>.
</li></ol>
<a name="Check_the_result"></a><h2> <span class="mw-headline"> Check the result  </span></h2>
<p>When you're done with the above, your actions should have resulted in a new project with (in our example) the name of <tt>org.eclipse.smila.integration.bundle</tt>, that now shows up in your workspace. Just check your <i>Package Explorer</i> for the new bundle. In it, there should be an empty <tt>code/src</tt> package, a <tt>META-INF</tt> folder containing a <tt>MANIFEST.MF</tt> file and a <tt>build.properties</tt> file. Open the <tt>MANIFEST.MF</tt> file and while clicking through the panels you will recognize most of the settings, we made above. 
</p><p>It is usually useful to add export all packages from your bundles, so that other bundles can import it. To do this, go to the <i>Runtime</i> tab of the <tt>MANIFEST.MF</tt> editor and add the packages to the <i>Exported-Packages</i> list. Additionally, it is good practice to maintain a version number (e.g. <tt>1.0.0</tt>) for each package.
</p><p>Now that you've created your bundle, you can add your components as you like but do not forget to <a href="../../Development_Guidelines/Create_a_test_bundle_(plug-in).html" class="mw-redirect" title="SMILA/Development Guidelines/Create a test bundle (plug-in)">add a test bundle</a>.
</p>
<a name="Add_bundle_to_launch_configuraton"></a><h2> <span class="mw-headline"> Add bundle to launch configuraton </span></h2>
<p>To add your new bundle to the <tt>SMILA</tt> launch configuration in the workspace, so that you can test and debug it in a running SMILA system:
</p>
<ul><li> Open <i>Run</i> -&gt; <i>Run Configurations...</i> or <i>Debug Configurations...</i>
</li><li> In the list on the left side, select <i>OSGi Framework</i> -&gt; <i>SMILA</i>
</li><li> In the <i>Bundles</i> list on the right side, look for your bundle and select it. Defaults for <i>Start level</i> and <i>Auto-Start</i> are OK for pipelet bundles. For bundles containing OSGi services (e.g. workers or HTTP handlers) set <i>Auto-Start</i> to <tt>true</tt> so that the service gets activated at system start.
</li></ul>
<a name="Create_a_Working_Set"></a><h2> <span class="mw-headline"> Create a Working Set </span></h2>
<p>You may want to create a working set for your own bundles to make it easier to find them among all those SMILA bundles:
</p>
<ul><li>In the <i>Package Explorer</i> view on the left side, open the menu (click on the small triangle in the upper right corner) and select <i>Select Working Sets...</i>
</li><li>In the following dialog, click <i>New...</i>
<ul><li>Select <i>Java</i>, click <i>Next &gt;</i>
</li><li>Enter a name (e.g. "My Bundles"), select you bundle in the left list and click <i>Add --&gt;</i>, then click <i>Finish</i>
</li></ul>
</li><li>Select the created working set in the list and click <i>OK</i>
</li></ul>
<p>Now only your own bundle will be displayed in the Package Explorer. To view all bundles again, open the explorer view menu again and choose <i>Deselect Working Set</i>. To add more bundles to an existing working set, choose <i>Edit active working set</i> when one is selected. You can also create more working sets (e.g. for subsets of SMILA you need to see) as you like. Just try it out (:
</p>
<a name="Integrating_the_new_bundle_in_the_build_process"></a><h2> <span class="mw-headline"> Integrating the new bundle in the build process </span></h2>
<p>To include the just created bundle in the build you should follow the instructions on <a href="../../Development_Guidelines/How_to_integrate_new_bundle_into_build_process.html" class="mw-redirect" title="SMILA/Development Guidelines/How to integrate new bundle into build process">how to integrate a new bundle into the build process</a>.
</p>
<!-- 
NewPP limit report
Preprocessor node count: 28/1000000
Post-expand include size: 0/2097152 bytes
Template argument size: 0/2097152 bytes
#ifexist count: 0/100
-->

<!-- Saved in parser cache with key wikidb:pcache:idhash:15384-0!1!0!!en!2!edit=0 and timestamp 20120710123009 -->
<div class="printfooter">
Retrieved from "<a href="Create_a_bundle_(plug-in).html">http://wiki.eclipse.org/SMILA/Documentation/HowTo/Create_a_bundle_%28plug-in%29</a>"</div>
          <div id="catlinks"><p class='catlinks'><a href="http://wiki.eclipse.org/Special:Categories" title="Special:Categories">Category</a>: <span dir='ltr'><a href="http://wiki.eclipse.org/Category:SMILA" title="Category:SMILA">SMILA</a></span></p></div>          <!-- end content -->
          <div class="visualClear"></div>
        </div>
      </div>


    </div>


	<!-- Yoink of toolbox for phoenix moved up -->


  </div>
  </div>
              <div id="clearFooter"/>
            <div id="footer" >  
	      <ul id="footernav">
                <li class="first"><a href="http://www.eclipse.org/">Home</a></li>
               	<li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
	        <li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
		<li><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li>
                <li><a href="http://www.eclipse.org/org/foundation/contact.php">Contact</a></li>
               	<li><a href="http://wiki.eclipse.org/Eclipsepedia:About" title="Eclipsepedia:About">About Eclipsepedia</a></li>
	      </ul>
              <span id="copyright">Copyright &copy; 2012 The Eclipse Foundation. All Rights Reserved</span>
	      <p id="footercredit">This page was last modified 07:27, 25 June 2012 by <a href="http://wiki.eclipse.org/User:Andreas.weber.empolis.com" title="User:Andreas.weber.empolis.com">Andreas Weber</a>. Based on work by <a href="http://wiki.eclipse.org/index.php?title=User:Juergen.schumacher.attensity.com&amp;action=edit" class="new" title="User:Juergen.schumacher.attensity.com">Juergen Schumacher</a>, <a href="http://wiki.eclipse.org/User:Igor.novakovic.attensity.com" title="User:Igor.novakovic.attensity.com">Igor Novakovic</a> and <a href="http://wiki.eclipse.org/index.php?title=User:Nadine.auslaender.attensity.com&amp;action=edit" class="new" title="User:Nadine.auslaender.attensity.com"> </a> and <a href="http://wiki.eclipse.org/index.php?title=SMILA/Documentation/HowTo/Create_a_bundle_%28plug-in%29&amp;action=credits" title="SMILA/Documentation/HowTo/Create a bundle (plug-in)">others</a>.</p>
	      <p id="footerviews">This page has been accessed 3,608 times.</p>
	    </div>

            <script type="text/javascript">
              var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
              document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
            </script>
            <script type="text/javascript">
              var pageTracker = _gat._getTracker("UA-910670-4");
              pageTracker._trackPageview();
            </script>
 
 	



		

<!-- 			<div class="visualClear"></div> -->
	
		<script type="text/javascript">if (window.runOnloadHook) runOnloadHook();</script>
</div>

<!-- Served in 0.056 secs. --></body></html>
