Development Environment Setup Walkthrough
Information
This is a walkthrough for setting up a Sakai development environment on a laptop or desktop. These instructions will also work for setting up a development server though I suggest slightly beefier settings for memory. This is currently tailored for Sakai 2.9+. Once you have a Sakai development environment setup you should be able to program your own Sakai tools or modify existing tools.
Notes for developers using older versions of Sakai (2.8.x-)
Developers who are using Sakai 2.8.x through 2.5.x should use the Development Environment Setup Walkthrough (2.5.x-2.8.x)
Developers who are using Sakai 2.4.x or lower should use the Development Environment Setup Walkthrough (2.2.x-2.4.x)
Notes for windows users
change the "/" to "\" for all directory paths except those specified in the maven build.properties file
add the drive letter (C:) to your paths
use %VARIABLE% instead of $VARIABLE with environment variables
set your environment variables in Control Panel -> System -> Advanced -> Environment Variables
All of sakai and related programs should be installed in an opt directory which you will need full write access to, put this directory anywhere you want, this document will assume you have placed it in your root directory
Install/Verify you have Java 1.7
Install/Verify you have MySQL 5.1 or later
Setup Sakai DB (schema) and user
Create the sakai database and sakai user (password=ironchef)
Run the following from a command line prompt:
mysql -u root -pNote: You can also do the following if you prefer to be prompted for the password: mysql -uroot -p
Then run these commands from the mysql prompt (one command per line):
create database sakai default character set utf8; grant all privileges on sakai.* to 'sakai'@'localhost' identified by 'ironchef'; grant all privileges on sakai.* to 'sakai'@'127.0.0.1' identified by 'ironchef'; flush privileges; quit[Optional] Download and install mysql query browser
You do not have to do anything with query browser now
Download and setup Maven 2.2.x+ stable package
Install/Verify you have Subversion
Download and setup tomcat 7.0.21+ (stable only)
Download and setup MySQL Connector/J stable
Use Subversion to download sakai code (Sakai 10 and earlier) or use Git/Github to download sakai code (Sakai 11 and later)
Change to the /opt directory
Checkout source from trunk (absolute latest stuff) or a release branch or tag:
Trunk: svn checkout https://source.sakaiproject.org/svn/sakai/trunk/ sakai-trunk
2.9.x Branch: svn checkout https://source.sakaiproject.org/svn/sakai/branches/sakai-2.9.x/
If you want a version other than these, browse the tags and branches at https://source.sakaiproject.org/svn/sakai/
Checkout will take about 5-10 minutes
The directory created by subversion will be referred to as <sakai-src> directory (this could be whatever you want; above examples use 'sakai-trunk' and 'sakai-2.9.x')
Setup sakai.properties file
Create sakaidirectory in $CATALINA_HOME
$CATALINA_HOME should be /opt/tomcat if you have been following these instructions
Copy the default config from default.sakai.properties to $CATALINA_HOME/sakai/sakai.properties
The default configuration template is at https://source.sakaiproject.org/svn/config/trunk/configuration/bundles/src/bundle/org/sakaiproject/config/bundle/default.sakai.properties.
Edit the sakai.properties file for a MySQL dev environment. Starting at the section marked # DATABASE:
Set BaseDataSource username
Set username@javax.sql.BaseDataSource=sakai
Set BaseDataSource password
Set password@javax.sql.BaseDataSource=ironchef
Find the section: # HSQLDB settings and verify following lines are commented out
# HSQLDB settings (DEFAULT) #vendor@org.sakaiproject.db.api.SqlService=hsqldb #driverClassName@javax.sql.BaseDataSource=org.hsqldb.jdbcDriver #hibernate.dialect=org.hibernate.dialect.HSQLDialect #validationQuery@javax.sql.BaseDataSource=select 1 from INFORMATION_SCHEMA.SYSTEM_USERS # Two hsqldb storage options: first for in-memory (no persistence between runs), second for disk based. #url@javax.sql.BaseDataSource=jdbc:hsqldb:mem:sakai #url@javax.sql.BaseDataSource=jdbc:hsqldb:file:${sakai.home}db/sakai.dbFind the section: # MySQL settings and uncomment the 6+ lines in it
# MySQL settings vendor@org.sakaiproject.db.api.SqlService=mysql driverClassName@javax.sql.BaseDataSource=com.mysql.jdbc.Driver hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect url@javax.sql.BaseDataSource=jdbc:mysql://127.0.0.1:3306/sakai?useUnicode=true&characterEncoding=UTF-8 validationQuery@javax.sql.BaseDataSource=select 1 from DUAL defaultTransactionIsolationString@javax.sql.BaseDataSource=TRANSACTION_READ_COMMITTED
Save the changes to the sakai.properties file
Create maven settings.xml file
Use Maven to build Sakai
Open a command line shell
Change directory to /opt/<sakai-src>
Execute mvn clean install to build Sakai using maven
Note: The build will take an extra 5-10 minutes to download dependencies the first time
Execute mvn sakai:deploy to deploy Sakai to your tomcat using maven
Partial builds are supported by the maven2 build system
You can now do a "mvn clean install sakai:deploy" from any subdirectory and build just that codeOnce you have downloded the jars you can run maven off-line with mvn -o clean install sakai:deploy
Start Tomcat and check to make sure Sakai runs
Start tomcat using $CATALINA_HOME/bin/startup
Allow 1 minute+ for tomcat to start up
Open http://localhost:8080/ to verify tomcat is running
Open http://localhost:8080/portal to verify sakai is running
Login to sakai as username:admin, password:admin
Shutdown Tomcat using $CATALINA_HOME/bin/shutdown
Add subclipse to Eclipse
Add Maven Eclipse Plugin to Eclipse
Add Lombok plugin to Eclipse [OPTIONAL]
Lombok Library - http://projectlombok.org/download.html
Shutdown eclipse
Follow the steps on the page linked above
Restart eclipse
NOTE: this is only required for certain parts of the code that use the lombok library (a limited set)
Import Sakai source code into Eclipse