<!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/Development_Guidelines/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="../Documentation/HowTo/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="../Documentation/HowTo.html" title="SMILA/Documentation/HowTo">HowTo</a></span>(Redirected from <a href="http://wiki.eclipse.org/index.php?title=SMILA/Development_Guidelines/Create_a_bundle_%28plug-in%29&amp;redirect=no" title="SMILA/Development Guidelines/Create a bundle (plug-in)">SMILA/Development Guidelines/Create a bundle (plug-in)</a>)</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="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="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="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="../Documentation/HowTo/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,609 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.060 secs. --></body></html>
