blob: a3e892b2fe2a2fc9ddd87e234631448c08b7131d [file] [log] [blame]
= 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}