Title: Getting and Building Sling Excerpt: A quick guide for getting the Sling source, then building and running the resulting Sling instance; either without or with Eclipse. A quick guide for getting the Sling source, then building and running the resulting Sling instance; either without or with Eclipse. Note that you don't *have* to build Sling yourself, if you don't need the bleeding-edge stuff you can get prebuilt binaries from the [Downloads](/downloads.cgi) page. But those, especially the launchpad runnable jar, are not released often and can be outdated. In case of doubt, build it yourself as shown below or ask on the Sling users mailing list. Rather than performing a full build of Sling, which can take 5-10 minutes on a recent computer once your local Maven repository is up to date, it's recommended to build only the launchpad and the modules you're interested in. ## tl:dr - Short form build + run instructions If you already have the required svn (or Git, see below) client, JDK and Maven installed, here's the short form recipe: $ svn co http://svn.apache.org/repos/asf/sling/trunk sling $ cd sling # you are now in the Sling SVN checkout $ cd launchpad/builder $ mvn --update-snapshots clean install $ export DBG="-Xmx384M -agentlib:jdwp..." # (see below) $ java $DBG -jar target/org.apache.sling.launchpad... # (see below) With this, Sling should be running at http://localhost:8080 with remote debugging active as per the $DBG variable. ## Prerequisites Before you begin, you need to have the following tools installed on your system: * Java 7 or higher * [Maven](http://maven.apache.org) 3.0.4 or later; enforced by the Sling parent pom If you want to set up Eclipse (not required to build Sling) you'll also need the following installed: * Eclipse (tested with 3.4.2 and 3.5.x on Win XP, SP3, 3.6.x on Win7, 3.7 on MacOS X 10.6); just a plain installation of the platform runtime binary and the JDT will be adequate (you can install the IDE for Java Developers for convenience) * M2Eclipse plugin for Eclipse (sonatype) \-> [instructions](http://m2eclipse.sonatype.org/installing-m2eclipse.html) * [Subversive plugin](http://www.polarion.com/products/svn/subversive.php) or [Subclipse-plugin](http://subclipse.tigris.org) for Eclipse ## Environment Setup The full build process requires quite a lot of resources, so you may run into limits. The following hints should show you what to setup before building Sling. ### Environment Variable Space * *Problem* \- Build aborts when trying to launch the integration tests with the message [INFO] Error while executing forked tests.; nested exception is org.apache.maven.surefire.booter.shade.org.codehaus.plexus.util.cli.CommandLineException: Error setting up environmental variables error=12, Not enough space This problem is caused by insufficient swap space. When running the integration tests in the `launchpad/testing` modules, a process is launched by calling the `exec` system call. This copies the process (copy-on-write, though) and thus allocates as much virtual memory as is owned by the parent process. This may fail if swap space is exhausted. * *Platform* \- OpenSolaris * *Fix* \- If this issue persists you will need to check your system requirements and configuration with regard to swap, before taking action - if necessary. ## Configuring Maven See [MavenTipsAndTricks]({{ refs.maventipsandtricks.path }}). ## Getting the Sling Source ### From the Apache Sling Subversion repository 0. Install an svn client if needed. 1. Checkout Sling from the Subversion repository $ svn checkout http://svn.apache.org/repos/asf/sling/trunk sling ### From the Sling GitHub mirror 0. Install a Git client if needed 1. Checkout Sling from the GitHub mirror $ git clone https://github.com/apache/sling.git ### With Eclipse Subversive or Subclipse First note how simple the above SVN instructions are...but if you *really* want to do this, read on. If you use the Subversive plugin make sure you have installed the "Subversive Integration for M2Eclipse Project" which can be found under the following Eclipse update site: [http://community.polarion.com/projects/subversive/download/integrations/update-site/](http://community.polarion.com/projects/subversive/download/integrations/update-site/). Also, make sure that you have installed either the "Maven SCM handler for Subclipse" or the "Maven SCM handler for Subversive". #### Create a new workspace It's best to create a new workspace for the sling project: 1. List item 1. Menu: File->Switch Workspace->Other... 1. Enter a path for the new workspace and click OK 1. When Eclipse has restarted it's time to adjust some configs 1. Turn off automatic build (Menu: Project->Build Automatically) 1. Go to menu: Eclipse->Preferences, in the preferences dialog select Java \-> Compiler \-> Errors/Warnings 1. Expand the "Deprecated and restricted API" and change "Forbidden references (access rules)" from "Error" to "Warning" 1. Click OK #### Checkout the Sling source 1. Menu: File->Import 1. In the Import wizard select Maven->"Check out Maven Projects from SCM" 1. Click next 1. In the "SCM URL" field pick "SVN" and enter the url "http://svn.apache.org/repos/asf/sling/trunk" 1. Click Finish Eclipse will now start to download the source and import the Maven projects. You might encounter some "Problem Occured" dialogs about "An internal error...", but just click OK on those and let Eclipse continue with the import. Be warned: This could take some time (it was 30 minutes on my laptop)\! Possibly something in sling-builder might get a bit messed up (I didn't experience that problem, but Pontus reported it) then you can simply fix it with revert: 1. In the Project Explorer right-click on the "sling-builder" project and select the Team->Revert... menu 1. A couple of changes will be displayed 1. Click OK ## Building Sling Note that while it's possible to build the full Sling reactor, using the pom.xml file in the root of the SVN checkout, this should rarely be needed and it's almost always too slow to consider. Instead, it's recommended to build the Sling launchpad and the module you're working on at the moment. ### With the Maven command line tool 1. Enter the directory, then do a build and local install of the launchpad (below are unix/linux commands, slightly different under windows) $ cd sling $ cd launchpad/builder # you are now in the Sling SVN checkout $ mvn --update-snapshots clean install $ java -jar target/org.apache.sling.launchpad-*.jar -c test -f -