| = Coding guidelines |
| |
| == Code Style |
| |
| There are not yet complete code formatters and checkstyle rules for aries. |
| In the mean time you can set these rules. |
| |
| * 4 spaces instead of tabs |
| * Line width 130 characters |
| |
| == Maven best practice in Aries development |
| |
| === Overall structure |
| |
| The Aries project is a collection of loosely couple bundles, therefore it must be possible to build each bundle on its own. |
| This implies: |
| |
| . A parent pom that isn't at the root of the SVN trunk. |
| . Each bundle has enough pom info so that it can be released independently. |
| . parent/default-parent has dependency management for basic osgi-dependencies that all projects are almost certain to use (this includes PAX dependencies for testing). |
| . Each bundle has legal files in its checkout root. |
| . Each bundle has an SCM element in its top level pom. |
| . Bundles do not (except samples) have sub-modules. |
| |
| === Good practice in the pom |
| |
| . Alphabetic ordering in dependency management is helpful |
| . Include a brief description of the project |
| . Commenting in platform dependencies, see samples assembly projects. |
| . Use ${project.version} _not_ $\{version} for Maven 3 compatibility. |
| |
| === Group and Artifact names |
| |
| . The Bundle Symbolic Name is explicitly set to the Maven artifactId. |
| For projects which deliver bundles, the artifactID will therefore completely describe the jar and must begin org.apache.aries.\{subproject}. |
| For projects which do not deliver bundles (for example agregator projects) it is acceptable to use a short descriptive artifactID. |
| . The group ID will overlap with the artifactId and will normally be of the form org.apache.aries.\{subproject} |