= Directory Layout = This page describes the directory layout in each of the Subversion trunks (separate IDEA projects) that are part of the Subversion repository of the Sourceforge DOMS project. == Top level == The top level directory has the following: * ''''{{{.ipr}}} - The IDEA project file * ''''{{{.iml}}} - The IDEA virtual project module file * {{{LICENSE}}} - A text file containing the Apache License version 2.0 * {{{NOTICE}}} - A text file containing attribution notices (see Apache 2.0 License) * {{{README}}} - A text file giving an overview of this IDEA project, including this directory explanation, as well as info on how the project is used and further developed by contributers. * {{{qascan.xml}}} - Configuration file for automated code QA checking * {{{build.xml}}} - Project ant targets * {{{build.properties}}} - Project ant target properties * {{{build-includes.xml}}} - Generally useful ant code. This should be the same for every sourceforge package. * {{{build-rest-webservices.xml}}} - Optional - webservice-related ant code. This should be the same for every sourceforge package. * {{{build-soap-webservices.xml}}} - Optional - webservice-related ant code. This should be the same for every sourceforge package. * {{{docs/}}} - Optional - A folder for general project documentation - anarchy governs this directory * {{{lib/}}} - A folder for project libraries (see the [[#lib|lib/]] section below) * {{{bin/}}} - Scripts for the project * {{{modules/}}} - A folder containing any number of modules and/or module groups And '''not''' in SVN: * {{{apidocs/}}} - Folder for generated javadoc * ''''{{{.iws}}} - IDEA workspace configuration file == Module groups == A module group is a directory with name '''' in lower case, containing the following: * A number of directories, each a module or module group. == Modules == Each module, with name '''', is contained in a directory named after the module - module names are in lower case. This directory contains the following: * ''''{{{.iml}}} - The IDEA module file, module names are lower case * {{{data/}}} - Optional - a folder for data belonging to the module - anarchy reigns * {{{docs/}}} - Optional - a folder for module documentation - anarchy governs this directory * {{{lib/}}} - A folder for module libraries (see the [[#lib|lib/]] section below, including module lib restrictions). * {{{config/}}} - Folder with module configuration files * {{{src/}}} - Module java source * {{{test/}}} - Unit tests for java source * {{{test/data}}} - Data used by unit tests * {{{bin/}}} - Scripts for the module * {{{web/}}} - Optional - contains a WEB-INF directory and potentially jsp- and html-files for the module * {{{build.xml}}} - Module ant targets * {{{build.properties}}} - Optional - module ant target properties * {{{build-rest-webservices.xml}}} - Optional - webservice-related ant code. This should be the same for every sourceforge package. * {{{build-soap-webservices.xml}}} - Optional - webservice-related ant code. This should be the same for every sourceforge package. And '''not''' in SVN: * {{{classes/}}} - Folder for generated class files * {{{dist/}}} - Folder with generated Release packages (see the [[#dist|dist/]] section below) <> == lib/ == Contains a directory for each library-package we use, with directory name of the style {{{-}}}, for example {{{fedora-client-3.2.1}}}. Each of these directories contain the following subdirectories: * {{{jars/}}} - contains all jar-files in the package * {{{apidocs/}}} - contains zipfiles with apidocs for the package itself, as well as potentially docs for the libraries the package depends on. * {{{src/}}} - contains zipfiles with sources for the package itself, as well as potentially sources for the libraries the package depends on. * {{{license/}}} - contains all license-information contained in the package Each lib '''must''' be accompanied by license, and preferably includes apidocs and src for the package itself. Other folders are allowed. {{{data/}}} is commonly used to house relevant data and config files. === Module libs === Modules can have module specific libs in their lib folder (and all libraries in a module lib folder are module libs). There are certain restrictions on module libs: * They must not be exposed in any way in the module public interface. In other words, people building against this module should not need to know about the module lib. * They must not be used by other modules in the project. If they are, they should be promoted to project libraries. <> == dist/ == Contains generated zip-files (from ant target), see [[ModuleReleaseStructure| module release structure]] and [[Ant]] guidelines.