3 Source Code
Sources can be obtained through SVN. Instructions for setting up a development environment with Daisy (which is slightly different from using the packaged version) are included in the README.txt's in the source tree. For anonymous, read-only access to Daisy SVN, use the following command:
svn co http://svn.daisycms.org/repos/daisy/trunk/daisy
This will give the latest development code (the "trunk"). To get the source code of a specific release, use a command like this:
svn co http://svn.daisycms.org/repos/daisy/tags/RELEASE_2_3_0 daisy
See also the existing tags.
No authentication is required for anonymous access. If you're behind a (transparent) proxy, you might want to verify whether your proxy supports the extended HTTP WebDAV methods.
3.1 Daisy Build System
We should consider removing this document, Maven is common enough these days.
The build system used by Daisy is Maven, an Apache project.
3.1.1 Maven intro
What follows is the very-very-quick Maven intro, for those not familiar with Maven.
Since Daisy 2.4 we use maven 2 (mvn). Before that we used maven 1.
Unlike Ant, where you tell how your code should be build, in Maven you simply tell what directory contains your code, and what the dependencies are (i.e. what other jars it depends on), and it will build your code. This information is stored in the pom.xml files that you'll see across the Daisy source tree. There are a lot of them, since Daisy is actually composed of a whole lot of mini-projects, whereby some of these projects depend on one or more of the others.
An important concept of Maven is the repository, which is a repository of so-called artifacts, usually jar files. An artifact in the repository is identified uniquely by a group id and an artifact id (both are simply descriptive names). Declaring the dependencies of a project is done by specifying repository references, thus for each dependency you specify the group id and id of the dependency. An example dependency declaration, as defined in a project.xml file:
<dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>3.0.1</version> </dependency>
So where does the repository physically exist? Well, there can be many repositories. The most important public one is the so-called central repository on repo1.maven.org:
The repository is simply accessed using HTTP, so you can take your browser and surf to that URL. A repository like the one on repo1.maven.org called a remote repository. After initially downloading an artifact from the remote repository, it is installed in your local repository, which is by default located in ~/.m2/repository.
When you build a project, the result of the build is usually a jar file. Maven will install this jar file in your local repository, so that when you build another project that depends on this jar file, it can be found over there. When searching a dependency, Maven always checks the local repository first, and then goes off checking remote repositories. Which remote repositories are searched is of course configurable.
There is a lot more to tell about Maven, such as that it is actually composed of a whole lot of plugins, but I'll let you explore the Maven documentation to learn about that.