<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<!--
Copyright 1999-2004 The Apache Software Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->


<!-- Content Stylesheet for Site -->

        
<!-- start the processing -->
    <!-- ====================================================================== -->
    <!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
    <!-- Main Page Section -->
    <!-- ====================================================================== -->
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

                                                    <meta name="author" content="
			OpenMeetings Team
		">
            <meta name="email" content="sebawagner@apache.org">
            
           
                                    
                        
            <title>Apache OpenMeetings - Build instructions</title>
            <link rel="stylesheet" type="text/css" href="css/openmeetings.css">
            <link rel="stylesheet" type="text/css" href="css/jquery-ui.css">
            <link rel="stylesheet" type="text/css" href="css/coin-slider-styles.css">
            <link rel="stylesheet" type="text/css" href="css/colorbox.css" />
            
			<!-- Add jQuery library -->
			<script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
		
			<!-- Add coinslider plugins -->
			<script type="text/javascript" src="js/coin-slider.min.js"></script>
			
			<!-- Add colorbox plugin -->
			<script type="text/javascript" src="js/jquery.colorbox.js"></script>
		
			<script src="js/jquery.ui.core.js"></script>
			<script src="js/jquery.ui.widget.js"></script>
		
			<script src="js/jquery.ui.accordion.js"></script>
			
			<script>
			$(function() {
				$( "#accordion" ).accordion({
					autoHeight: false,
					navigation: true,
					navigationFilter: function () {
						var sidebarHrefArray = this.href.split("/");
    					var sideBarLastString = sidebarHrefArray[sidebarHrefArray.length - 1].toLowerCase();
						
						if (sideBarLastString.indexOf("#") == -1) {
							return false;
						}
						
												/* document.location.href */
						var currentSection = "";
						
						var currentLocation = "";
						var currentLink = "";
						if (false) {
						
						}
    										        					            					            	
					            	else if (document.location.href.indexOf("/index.html") > 0) {
					            		currentLocation = "General";
					            		currentLink = "/index.html".substr(1, "/index.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/license.html") > 0) {
					            		currentLocation = "General";
					            		currentLink = "/license.html".substr(1, "/license.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("http://www.apache.org/") > 0) {
					            		currentLocation = "General";
					            		currentLink = "http://www.apache.org/".substr(1, "http://www.apache.org/".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/downloads.html") > 0) {
					            		currentLocation = "General";
					            		currentLink = "/downloads.html".substr(1, "/downloads.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/commercial-support.html") > 0) {
					            		currentLocation = "General";
					            		currentLink = "/commercial-support.html".substr(1, "/commercial-support.html".length);
					            	} 
					            	
					        				        		    										        					            					            	
					            	else if (document.location.href.indexOf("/installation.html") > 0) {
					            		currentLocation = "InstallationandUpgrade";
					            		currentLink = "/installation.html".substr(1, "/installation.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/Upgrade.html") > 0) {
					            		currentLocation = "InstallationandUpgrade";
					            		currentLink = "/Upgrade.html".substr(1, "/Upgrade.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools") > 0) {
					            		currentLocation = "InstallationandUpgrade";
					            		currentLink = "https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools".substr(1, "https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/CommandLineAdmin.html") > 0) {
					            		currentLocation = "InstallationandUpgrade";
					            		currentLink = "/CommandLineAdmin.html".substr(1, "/CommandLineAdmin.html".length);
					            	} 
					            	
					        				        		    										        					            					            	
					            	else if (document.location.href.indexOf("/get-involved.html") > 0) {
					            		currentLocation = "Community";
					            		currentLink = "/get-involved.html".substr(1, "/get-involved.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/team-list.html") > 0) {
					            		currentLocation = "Community";
					            		currentLink = "/team-list.html".substr(1, "/team-list.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/mail-lists.html") > 0) {
					            		currentLocation = "Community";
					            		currentLink = "/mail-lists.html".substr(1, "/mail-lists.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("http://cwiki.apache.org/confluence/display/OPENMEETINGS/") > 0) {
					            		currentLocation = "Community";
					            		currentLink = "http://cwiki.apache.org/confluence/display/OPENMEETINGS/".substr(1, "http://cwiki.apache.org/confluence/display/OPENMEETINGS/".length);
					            	} 
					            	
					        				        		    										        					            					            	
					            	else if (document.location.href.indexOf("/svn.html") > 0) {
					            		currentLocation = "Development";
					            		currentLink = "/svn.html".substr(1, "/svn.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("http://issues.apache.org/jira/browse/OPENMEETINGS") > 0) {
					            		currentLocation = "Development";
					            		currentLink = "http://issues.apache.org/jira/browse/OPENMEETINGS".substr(1, "http://issues.apache.org/jira/browse/OPENMEETINGS".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/dependencies.html") > 0) {
					            		currentLocation = "Development";
					            		currentLink = "/dependencies.html".substr(1, "/dependencies.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/BuildInstructions.html") > 0) {
					            		currentLocation = "Development";
					            		currentLink = "/BuildInstructions.html".substr(1, "/BuildInstructions.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/JUnitTesting.html") > 0) {
					            		currentLocation = "Development";
					            		currentLink = "/JUnitTesting.html".substr(1, "/JUnitTesting.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/ReleaseGuide.html") > 0) {
					            		currentLocation = "Development";
					            		currentLink = "/ReleaseGuide.html".substr(1, "/ReleaseGuide.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/WebsiteGuide.html") > 0) {
					            		currentLocation = "Development";
					            		currentLink = "/WebsiteGuide.html".substr(1, "/WebsiteGuide.html".length);
					            	} 
					            	
					        				        		    										        					            					            	
					            	else if (document.location.href.indexOf("/SoapRestAPI.html") > 0) {
					            		currentLocation = "Integration";
					            		currentLink = "/SoapRestAPI.html".substr(1, "/SoapRestAPI.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/RestAPISample.html") > 0) {
					            		currentLocation = "Integration";
					            		currentLink = "/RestAPISample.html".substr(1, "/RestAPISample.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/LdapAndADS.html") > 0) {
					            		currentLocation = "Integration";
					            		currentLink = "/LdapAndADS.html".substr(1, "/LdapAndADS.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/voip-sip-integration.html") > 0) {
					            		currentLocation = "Integration";
					            		currentLink = "/voip-sip-integration.html".substr(1, "/voip-sip-integration.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/ErrorsTable.html") > 0) {
					            		currentLocation = "Integration";
					            		currentLink = "/ErrorsTable.html".substr(1, "/ErrorsTable.html".length);
					            	} 
					            	
					        				        		    										        					            					            	
					            	else if (document.location.href.indexOf("/MoodlePlugin.html") > 0) {
					            		currentLocation = "Plugins";
					            		currentLink = "/MoodlePlugin.html".substr(1, "/MoodlePlugin.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/SakaiPlugin.html") > 0) {
					            		currentLocation = "Plugins";
					            		currentLink = "/SakaiPlugin.html".substr(1, "/SakaiPlugin.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/JiraPlugin.html") > 0) {
					            		currentLocation = "Plugins";
					            		currentLink = "/JiraPlugin.html".substr(1, "/JiraPlugin.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/JoomlaPlugin.html") > 0) {
					            		currentLocation = "Plugins";
					            		currentLink = "/JoomlaPlugin.html".substr(1, "/JoomlaPlugin.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/DrupalPlugin.html") > 0) {
					            		currentLocation = "Plugins";
					            		currentLink = "/DrupalPlugin.html".substr(1, "/DrupalPlugin.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/BitrixPlugin.html") > 0) {
					            		currentLocation = "Plugins";
					            		currentLink = "/BitrixPlugin.html".substr(1, "/BitrixPlugin.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/ConfluencePlugin.html") > 0) {
					            		currentLocation = "Plugins";
					            		currentLink = "/ConfluencePlugin.html".substr(1, "/ConfluencePlugin.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/SugarCRMPlugin.html") > 0) {
					            		currentLocation = "Plugins";
					            		currentLink = "/SugarCRMPlugin.html".substr(1, "/SugarCRMPlugin.html".length);
					            	} 
					            	
					        				        							            					            	
					            	else if (document.location.href.indexOf("/RedminePlugin.html") > 0) {
					            		currentLocation = "Plugins";
					            		currentLink = "/RedminePlugin.html".substr(1, "/RedminePlugin.html".length);
					            	} 
					            	
					        				        		    										        					            				            						            			else if (document.location.href.indexOf("/ApacheDerbyConfig.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/ApacheDerbyConfig.html".substr(1, "/ApacheDerbyConfig.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/IBMDB2Config.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/IBMDB2Config.html".substr(1, "/IBMDB2Config.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/OracleConfig.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/OracleConfig.html".substr(1, "/OracleConfig.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/MySQLConfig.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/MySQLConfig.html".substr(1, "/MySQLConfig.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/PostgresConfig.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/PostgresConfig.html".substr(1, "/PostgresConfig.html".length);
						            	} 
				            							        				        							            				            						            			else if (document.location.href.indexOf("/Internationalisation.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/Internationalisation.html".substr(1, "/Internationalisation.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/LanguageEditor.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/LanguageEditor.html".substr(1, "/LanguageEditor.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/TimeZoneHandling.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/TimeZoneHandling.html".substr(1, "/TimeZoneHandling.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/EditTemplates.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/EditTemplates.html".substr(1, "/EditTemplates.html".length);
						            	} 
				            							        				        							            				            						            			else if (document.location.href.indexOf("/PortSettings.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/PortSettings.html".substr(1, "/PortSettings.html".length);
						            	} 
				            							        				        							            				            						            			else if (document.location.href.indexOf("/JVMPerformanceTuning.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/JVMPerformanceTuning.html".substr(1, "/JVMPerformanceTuning.html".length);
						            	} 
				            							        				        							            				            						            			else if (document.location.href.indexOf("/themes-and-branding.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/themes-and-branding.html".substr(1, "/themes-and-branding.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/Dashboard.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/Dashboard.html".substr(1, "/Dashboard.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/WebcamResolutions.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/WebcamResolutions.html".substr(1, "/WebcamResolutions.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/ConferenceRoomLayoutOptions.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/ConferenceRoomLayoutOptions.html".substr(1, "/ConferenceRoomLayoutOptions.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/HotKeys.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/HotKeys.html".substr(1, "/HotKeys.html".length);
						            	} 
				            							        				        							            				            						            			else if (document.location.href.indexOf("/WebappNamePath.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/WebappNamePath.html".substr(1, "/WebappNamePath.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/Navigation.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/Navigation.html".substr(1, "/Navigation.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/CalendarAndTimezone.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/CalendarAndTimezone.html".substr(1, "/CalendarAndTimezone.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/CustomRoomTypeHowTo.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/CustomRoomTypeHowTo.html".substr(1, "/CustomRoomTypeHowTo.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/CustomCryptMechanism.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/CustomCryptMechanism.html".substr(1, "/CustomCryptMechanism.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/GeneralConfiguration.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/GeneralConfiguration.html".substr(1, "/GeneralConfiguration.html".length);
						            	} 
				            							        				        							            				            						            			else if (document.location.href.indexOf("/RestrictedAccess.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/RestrictedAccess.html".substr(1, "/RestrictedAccess.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/RTMPSAndHTTPS.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/RTMPSAndHTTPS.html".substr(1, "/RTMPSAndHTTPS.html".length);
						            	} 
				            							        				        							            				            						            			else if (document.location.href.indexOf("/OpenOfficeConverter.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/OpenOfficeConverter.html".substr(1, "/OpenOfficeConverter.html".length);
						            	} 
				            						            			else if (document.location.href.indexOf("/FFMPEGVersionSwitch.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/FFMPEGVersionSwitch.html".substr(1, "/FFMPEGVersionSwitch.html".length);
						            	} 
				            							        				        							            				            						            			else if (document.location.href.indexOf("/Clustering.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/Clustering.html".substr(1, "/Clustering.html".length);
						            	} 
				            							        				        							            				            						            			else if (document.location.href.indexOf("/GetVersionInfo.html") > 0) {
				            				currentLocation = "Configuration";
					            			currentLink = "/GetVersionInfo.html".substr(1, "/GetVersionInfo.html".length);
						            	} 
				            							        				        		    					    					
    					currentLink = currentLink.toLowerCase();
    					currentLocation = currentLocation.toLowerCase();
    					
						return sideBarLastString == currentLink+"#"+currentLocation;
					}
				});
			});
			</script>
			
			<script type="text/javascript">
				$(document).ready(function() {
					$('.fancybox-buttons').colorbox({rel:'fancybox-buttons',width:"75%", height:"75%"});
					$('#accordion a').each(function() {
				      var a = $(this);
				      var href = a.attr("href");
				      if (href.indexOf("#") == -1) {
				      	  var compareIt = href.substr(2, href.length);
					      if (document.location.href.indexOf(compareIt)!= -1) {
					       a.addClass('active');
					      }
				      }
				    });
					$('#coin-slider').coinslider({ width: 640,height: 400, delay: 4000  });					
				});
			</script>	
						
			<style type="text/css">
				.fancybox-custom .fancybox-outer {
					box-shadow: 0 0 50px #222;
				}
			</style>
        </head>

        <body bgcolor="#ffffff" text="#000000" link="#123465" vlink="#123465" alink="#000000">  
        	<div class="mainbody" style="width: 100%;">
        	<div class="superbody" style="width: 100%;">
            <table border="0" width="100%" cellspacing="0">
                <!-- TOP IMAGE -->
                <tr>
                    <td align="left">
<a href="http://openmeetings.apache.org/"><img src="./images/logo-2.jpg" alt="Apache OpenMeetings" border="0"/></a>
</td>
                    <td width="80%" align="right" valign="top" >
	<a href="demo.html">Demo</a>
	<span>|</span> 
	<a href="downloads.html" target="_PARENT">Download</a>
	<span>|</span> 
	<a href="installation.html" target="_PARENT">Installation</a>
	<span>|</span> 
	<a href="https://cwiki.apache.org/confluence/display/OPENMEETINGS" target="_BLANK">Wiki</a>
	<span>&nbsp;</span>
</td>
                </tr>
            </table>
            <table border="0" width="100%" cellspacing="4">
                <tr><td colspan="2">
                    <hr noshade="noshade" size="1"/>
                </td></tr>

                <tr>
                    <!-- LEFT SIDE NAVIGATION -->
                    <td width="20%" valign="top" nowrap="nowrap">

                    <!-- special ACon Logo - leave here for next time
                    <a href="http://apachecon.com/2005/US/">
                        <img src="http://apache.org/images/ac2005us_blue_125x125.jpg" height="125"
                             width="125" border="0" alt="ApacheCon US 2005" />
                    </a>  -->

                   <!-- regular menu -->

                    
    <!-- ============================================================ -->
    <div id="accordion" style="width: 100%">
    
            	<h3><a href="#General">General</a></h3>
    	<div>
	        	            	            	    <a href="./index.html">Home</a>
<br/>
	        		        	            	            	    <a href="./license.html">License</a>
<br/>
	        		        	            	            	    <a href="http://www.apache.org/">ASF</a>
<br/>
	        		        	            	            	    <a href="./downloads.html">Downloads</a>
<br/>
	        		        	            	            	    <a href="./commercial-support.html">Commercial Support</a>
<br/>
	        		            	</div>
        	<h3><a href="#InstallationandUpgrade">Installation and Upgrade</a></h3>
    	<div>
	        	            	            	    <a href="./installation.html">Installation</a>
<br/>
	        		        	            	            	    <a href="./Upgrade.html">Upgrade</a>
<br/>
	        		        	            	            	    <a href=".https://cwiki.apache.org/confluence/display/OPENMEETINGS/Tutorials+for+installing+OpenMeetings+and+Tools">Tutorials</a>
<br/>
	        		        	            	            	    <a href="./CommandLineAdmin.html">Command Line Admin</a>
<br/>
	        		            	</div>
        	<h3><a href="#Community">Community</a></h3>
    	<div>
	        	            	            	    <a href="./get-involved.html">Get Involved</a>
<br/>
	        		        	            	            	    <a href="./team-list.html">Committers</a>
<br/>
	        		        	            	            	    <a href="./mail-lists.html">Mailing Lists</a>
<br/>
	        		        	            	            	    <a href="http://cwiki.apache.org/confluence/display/OPENMEETINGS/">Wiki</a>
<br/>
	        		            	</div>
        	<h3><a href="#Development">Development</a></h3>
    	<div>
	        	            	            	    <a href="./svn.html">Source Code</a>
<br/>
	        		        	            	            	    <a href="http://issues.apache.org/jira/browse/OPENMEETINGS">Bugs / Issues (JIRA)</a>
<br/>
	        		        	            	            	    <a href="./dependencies.html">Dependencies</a>
<br/>
	        		        	            	            	    <a href="./BuildInstructions.html">Build Instructions</a>
<br/>
	        		        	            	            	    <a href="./JUnitTesting.html">JUnit Testing</a>
<br/>
	        		        	            	            	    <a href="./ReleaseGuide.html">Release Guide</a>
<br/>
	        		        	            	            	    <a href="./WebsiteGuide.html">Website Guide</a>
<br/>
	        		            	</div>
        	<h3><a href="#Integration">Integration</a></h3>
    	<div>
	        	            	            	    <a href="./SoapRestAPI.html">SOAP/REST API</a>
<br/>
	        		        	            	            	    <a href="./RestAPISample.html">REST API Sample</a>
<br/>
	        		        	            	            	    <a href="./LdapAndADS.html">Ldap and ADS</a>
<br/>
	        		        	            	            	    <a href="./voip-sip-integration.html">VoIP and SIP</a>
<br/>
	        		        	            	            	    <a href="./ErrorsTable.html">Errors table</a>
<br/>
	        		            	</div>
        	<h3><a href="#Plugins">Plugins</a></h3>
    	<div>
	        	            	            	    <a href="./MoodlePlugin.html">Moodle Plugin</a>
<br/>
	        		        	            	            	    <a href="./SakaiPlugin.html">Sakai Plugin</a>
<br/>
	        		        	            	            	    <a href="./JiraPlugin.html">Jira Plugin</a>
<br/>
	        		        	            	            	    <a href="./JoomlaPlugin.html">Joomla Plugin</a>
<br/>
	        		        	            	            	    <a href="./DrupalPlugin.html">Drupal Plugin</a>
<br/>
	        		        	            	            	    <a href="./BitrixPlugin.html">Bitrix Plugin</a>
<br/>
	        		        	            	            	    <a href="./ConfluencePlugin.html">Confluence Plugin</a>
<br/>
	        		        	            	            	    <a href="./SugarCRMPlugin.html">SugarCRM Plugin</a>
<br/>
	        		        	            	            	    <a href="./RedminePlugin.html">Redmine Plugin</a>
<br/>
	        		            	</div>
        	<h3><a href="#Configuration">Configuration</a></h3>
    	<div>
	        	            	            	<b>DB Sample Configurations</b><br/>
	            			            			    <a href="./ApacheDerbyConfig.html">Apache Derby</a>
<br/>
	            			            			    <a href="./IBMDB2Config.html">IBM DB2</a>
<br/>
	            			            			    <a href="./OracleConfig.html">Oracle</a>
<br/>
	            			            			    <a href="./MySQLConfig.html">MySQL</a>
<br/>
	            			            			    <a href="./PostgresConfig.html">Postgres</a>
<br/>
	            			        		        	            	            	<b>Localization and languages</b><br/>
	            			            			    <a href="./Internationalisation.html">Internationalisation</a>
<br/>
	            			            			    <a href="./LanguageEditor.html">LanguageEditor</a>
<br/>
	            			            			    <a href="./TimeZoneHandling.html">TimeZoneHandling</a>
<br/>
	            			            			    <a href="./EditTemplates.html">EditTemplates</a>
<br/>
	            			        		        	            	            	<b>NAT Port Settings</b><br/>
	            			            			    <a href="./PortSettings.html">Port settings</a>
<br/>
	            			        		        	            	            	<b>Performance</b><br/>
	            			            			    <a href="./JVMPerformanceTuning.html">JVM performance tuning</a>
<br/>
	            			        		        	            	            	<b>User Interface</b><br/>
	            			            			    <a href="./themes-and-branding.html">Themes</a>
<br/>
	            			            			    <a href="./Dashboard.html">Dashboard</a>
<br/>
	            			            			    <a href="./WebcamResolutions.html">Webcam resolutions</a>
<br/>
	            			            			    <a href="./ConferenceRoomLayoutOptions.html">Room layout options</a>
<br/>
	            			            			    <a href="./HotKeys.html">Hot Keys</a>
<br/>
	            			        		        	            	            	<b>Customization</b><br/>
	            			            			    <a href="./WebappNamePath.html">Webapp name/path</a>
<br/>
	            			            			    <a href="./Navigation.html">Navigation</a>
<br/>
	            			            			    <a href="./CalendarAndTimezone.html">Calendar and timezone</a>
<br/>
	            			            			    <a href="./CustomRoomTypeHowTo.html">Custom room type</a>
<br/>
	            			            			    <a href="./CustomCryptMechanism.html">Custom ctypt mechanism</a>
<br/>
	            			            			    <a href="./GeneralConfiguration.html">General Configuration</a>
<br/>
	            			        		        	            	            	<b>Security</b><br/>
	            			            			    <a href="./RestrictedAccess.html">Restricted Access</a>
<br/>
	            			            			    <a href="./RTMPSAndHTTPS.html">RTMPS and HTTPS</a>
<br/>
	            			        		        	            	            	<b>Converters</b><br/>
	            			            			    <a href="./OpenOfficeConverter.html">OpenOffice Converter</a>
<br/>
	            			            			    <a href="./FFMPEGVersionSwitch.html">FFMPEG Version Switch</a>
<br/>
	            			        		        	            	            	<b>Clustering</b><br/>
	            			            			    <a href="./Clustering.html">Clustering</a>
<br/>
	            			        		        	            	            	<b>Misc</b><br/>
	            			            			    <a href="./GetVersionInfo.html">Get version info</a>
<br/>
	            			        		            	</div>
        
    </div>
     
    <br/>
    
                    </td>
                    <td width="80%" align="left" valign="top">
                                                                    <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="Nightly Builds"><strong>Nightly Builds</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>
				You can find Nightly Builds of the software at:
				<a href="https://builds.apache.org/view/M-R/view/OpenMeetings/" rel="nofollow" target="_BLANK">
					https://builds.apache.org/view/M-R/view/OpenMeetings/
				</a>
			</p>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="How to Build a Distribution"><strong>How to Build a Distribution</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <div>
				<p>To build a binary release of OpenMeetings you need: </p>
				<ul>
					<li>Sun JDK6</li>
					<li>Apache ANT (minimum) 1.8.3</li>
					<li>
						SVN Command line client (Subversion 1.7 required!)
						<a href="http://subversion.apache.org/packages.html" target="_BLANK" rel="nofollow">http://subversion.apache.org/packages.html</a>
					</li>
				</ul>
			</div>
                                                <p>Get the source: </p>
                                                <div class="xmlcode">
				svn checkout
				https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/
			</div>
                                                <p>Run the command: </p>
                                                <div class="xmlcode">
				ant
			</div>
                                                <p>There is no need to compile the client additionally! The ant task
				does it all! You will find a directory dist that contains
				OpenMeetings and a red5-server.
			</p>
                                                <p>To compile the client you can also use ant: </p>
                                                <div class="xmlcode">
				ant
				<span style="margin-left: 200px;"># compiles a complete package into the folder dist
				</span>
				<br />
				ant compile.laszlo.main
				<span style="margin-left: 70px;"># compiles the client into main.as3.swf10.swf and
					main.swf8.swf</span>
				<br />
				ant compile.laszlo.main.debug
				<span style="margin-left: 30px;"># compiles the debug-client into
					maindebug.as3.swf10.swf and maindebug.swf8.swf
				</span>
				<br />
				ant -Ddb=&lt;name of DB&gt;
				<span style="margin-left: 50px;"># will copy &lt;name of DB&gt;_persistense.xml to
					persistense.xml
				</span>
				<br />
				<span style="margin-left: 230px;">#(for ex. ant -Ddb=mysql will set mysql as default
					DB)
				</span>
			</div>
                                                <p>To compile just the openmeetings JAR file: </p>
                                                <div class="xmlcode">
				ant jar.only
			</div>
                                                <p>
				To run Junit tests using ANT see
				<a href="JUnitTesting.html">JUnitTesting</a>
			</p>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="Run, Develop, Test"><strong>Run, Develop, Test</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>
				To develop or build OpenMeetings you checkout the source as Eclipse
				project. You need the Subclipse or Subversive Plugin for Eclipse. If
				you just need to change 3 lines of code then your probably better
				switch to
				<a href="#How_to_build_a_distribution" rel="nofollow">How to build a
					distribution
				</a>
				.
			</p>
                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr><td bgcolor="#EFEFEF">
        <font color="#000000" face="arial,helvetica,sanserif">
          <a name="Step1 - Get required Software"><strong>Step1 - Get required Software</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>To develop OpenMeetings you need at least: </p>
                                                <ul>
					<li>Eclipse in a up to date copy and Sun JDK6 </li>
					<li>Apache ANT (minimum) 1.8.3</li>
					<li>
						Subclipse 1.8 (Subversion 1.7 required!)
						<a href="http://subclipse.tigris.org/" target="_BLANK" rel="nofollow">http://subclipse.tigris.org/
						</a>
					</li>
					<li>
						SVN Command line client (Subversion 1.7 required!)
						<a href="http://subversion.apache.org/packages.html" target="_BLANK" rel="nofollow">http://subversion.apache.org/packages.html</a>
					</li>
					<li>Spring IDE for Eclipse (installable via Help &gt; Eclipse
						Marketplace)
					</li>
					<li>
						Apache IvyDE™ For Eclipse (installable via Help &gt; Install
						New Software)
						URL: http://www.apache.org/dist/ant/ivyde/updatesite
						detailed steps can be found here:
						<a href="http://ant.apache.org/ivy/ivyde/download.cgi" target="_BLANK" rel="nofollow">http://ant.apache.org/ivy/ivyde/download.cgi</a>
					</li>
					<li>MySQL (or Postgres, or other Databases supported by openJPA)
						are optionally but handy to have them
					</li>
				</ul>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr><td bgcolor="#EFEFEF">
        <font color="#000000" face="arial,helvetica,sanserif">
          <a name="Step2 - Download the Source"><strong>Step2 - Download the Source</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>Advanced Users: Check out the Code from the Repository as a
					Java
					project into Eclipse.
				</p>
                                                <p>
					URL:
					<a href="https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/">
						https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/
					</a>
				</p>
                                                <p>To download the required JARs for building and developing
					OpenMeetings you need to run the ANT comand:
				</p>
                                                <div class="xmlcode">
					ant -Ddb=&lt;your_DB&gt; prepare-eclipse
				</div>
                                                <p>After the ANT command you need to press F5 and rebuild the
					project from inside Eclipse
				</p>
                                                <p>Step-By-Step: </p>
                                                <p>1) Start Eclipse </p>
                                                <p>
					2) Change Perspective to SVN Repository Exploring:
					<br />
					<br />
					<a class="fancybox-buttons" href="images/checkout_1.png">
						<img src="images/checkout_1.png" alt="" width="400" height="289" />
					</a>

				</p>
                                                <p>
					3) Select SVN Repository Exploring and click ok.
					<br />
					<br />
					<a class="fancybox-buttons" href="images/checkout_2.png">
						<img src="images/checkout_2.png" alt="" width="304" height="417" />
					</a>
				</p>
                                                <p>
					4) A new Dialog in Eclipse opens
					<strong>SVN Repositories</strong>
					<br />
					<br />
					<a class="fancybox-buttons" href="images/checkout_3.png">
						<img src="images/checkout_3.png" alt="" width="460" height="102" />
					</a>
				</p>
                                                <p>
					5) Click on the icon with the plus in the top right corner in the
					SVN Repository Dialog
					<br />
					<br />
					<a class="fancybox-buttons" href="images/checkout_4.png">
						<img src="images/checkout_4.png" alt="" width="57" height="38" />
					</a>
				</p>
                                                <p>
					6) Add the URL
					<a href="https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/" rel="nofollow">https://svn.apache.org/repos/asf/openmeetings/trunk/singlewebapp/
					</a>
					and click Finish
					<br />
					<br />
					<a class="fancybox-buttons" href="images/checkout_5.png">
						<img src="images/checkout_5.png" alt="" width="455" height="272" />
					</a>
				</p>
                                                <p>
					7) After download is complete you see a new Source Repository in
					the Repository Explorer. Right click on it and choose
					<strong>checkout</strong>
					<br />
					<br />
					<a class="fancybox-buttons" href="images/checkout_6.png">
						<img src="images/checkout_6.png" alt="" width="340" height="135" />
					</a>
				</p>
                                                <p>
					8) In the Dialog the opens now just click next
					<br />
					<br />
					<a class="fancybox-buttons" href="images/checkout_7.png">
						<img src="images/checkout_7.png" alt="" width="390" height="338" />
					</a>
				</p>
                                                <p>
					9) In the next Dialog just click Finish, Eclipse will then download
					the sources
					<br />
					<br />
					<a class="fancybox-buttons" href="images/checkout_8.png">
						<img src="images/checkout_8.png" alt="" width="390" height="338" />
					</a>
				</p>
                                                <p>
					10) After the download is complete you will see a new Project in
					the Package Explorer Dialog of Eclipse
					<br />
					<br />
					<a class="fancybox-buttons" href="images/checkout_9.png">
						<img src="images/checkout_9.png" alt="" width="310" height="297" />
					</a>
				</p>
                                                <div>
					11) Please run
					<div class="xmlcode">
						ant prepare-eclipse
					</div>
					to download all necessary jar files, and perform source
					<tt>Refresh</tt>
					to resolve all compilation issues.
				</div>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                    <table border="0" cellspacing="0" cellpadding="0" width="100%">
      <tr><td bgcolor="#EFEFEF">
        <font color="#000000" face="arial,helvetica,sanserif">
          <a name="Step3 - Deploy and Run"><strong>Step3 - Deploy and Run</strong></a>
        </font>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>
					see the first chapter about the ANT tasks to compile the code. You
					will find a directory called
					<strong>dist</strong>
					which contains a regular openmeetings including red5. You can then
					use the usual process like described at
					<a href="installation.html">installation</a>
					to run the code then.
				</p>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="Links"><strong>Links</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <ul>
				<li>
					Getting Started with OpenLaszlo, checkout
					<a href="http://www.openlaszlo.org/lps4.2/laszlo-explorer/index.jsp?lzr=swf8" target="_BLANK" rel="nofollow">Laszlo-in-10-Minutes</a>
					and the
					<a href="http://www.openlaszlo.org/lps4.2/docs/" target="_BLANK" rel="nofollow">Application
						Developer's Guide
					</a>
					or try the
					<a href="http://www.openlaszlo.org/getstarted" target="_BLANK" rel="nofollow">ScreenCast</a>
				</li>
				<li>
					<a href="http://openmeetings.apache.org/svn.html">
						browse SVN source
					</a>
				</li>
			</ul>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                                <table border="0" cellspacing="0" cellpadding="0" cellspacing="0" width="100%">
      <tr><td ><!-- bgcolor="#EEEEEE" -->
        <font color="#000000" face="verdana,arial,helvetica,sanserif">
          <a name="Tipps and Gotchas"><strong>Tipps and Gotchas</strong></a>
        </font>
        <hr style="width:100%; color:#999999; background-color:#999999; height:1px; border:0px;"/>
      </td></tr>
      <tr><td>
        <blockquote>
                                    <p>When you want to develop only client side there are handy ANT
				tasks so that you only rebuild the SWFs, same for the Java side.
			</p>
                                                <p>
				It
				also takes much less time if you do use MySQL as database then
				rebuilding the software and waiting for Apache Derby to set up the
				database everytime you did rebuild.
			</p>
                                                <p>
				<b>Working behind a proxy:</b>
				If you are sitting behind a proxy you should add some proxy settings
				before starting the build process.
				<br />
				For Apache Ivy see:
				<a href="http://ant.apache.org/ivy/faq.html" target="_BLANK" rel="nofollow">http://ant.apache.org/ivy/faq.html
				</a>
				<br />
				For SVN Command Line Client (From CollabNet 1.7) see:
				<a href="https://ctf6latest.collab.net/internal-help/index.jsp?topic=/teamforge610/faq/client_proxy_settings.html" target="_BLANK" rel="nofollow">https://ctf6latest.collab.net/internal-help/index.jsp?topic=/teamforge610/faq/client_proxy_settings.html
				</a>
			</p>
                            </blockquote>
      </td></tr>
      <tr><td><br/></td></tr>
    </table>
                                        </td>
                </tr>

                <!-- FOOTER -->
                <tr><td colspan="2">
                    <hr noshade="noshade" size="1"/>
                </td></tr>
                <tr><td colspan="2">
                    <div align="center"><font color="#123465" size="-1"><em>
                    Copyright &#169; 2003-2013, The Apache Software Foundation
                    </em></font></div>
                </td></tr>
            </table>
            </div>
            </div>
        </body>
    </html>
<!-- end the processing -->






















