projectdoc Toolbox

We decided to move our documentation from the XDoc format to projectdoc on Confluence. This allows us to update the information independent of the release cycles of the products. Here are some tips on how to use projectdoc for this task.

Audience
Level of Experience
Type
Contents

 

Description

We decided to move our software documentation from the XDoc format to projectdoc on Confluence. This allows us to update the information independent of the release cycles of the products. We also take advantage of templates and macros that make it much easier to create the documentation collaboratively.

The documentation sites for these plugins already moved from our site to our wiki:

PluginShort Description
Generates build metadata and provides it as Maven build properties. The properties are written to a properties file that can be included in the generated artifact. The information can also be added to the manifest file.
smartics-ea-maven-plugin
Integrates the Enterprise Architect (Sparx Systems) into a Maven build process. This allows to export diagrams to be used for documentation in other tools, such as projectdoc.
smartics-jboss-modules-maven-plugin
Generates an archive of modules to be copied to an JBoss 7 installation. The configuration is generated from the Maven POM with the help of a collection of generic and project-specific mapping rules.

On this page we present some tips on how to use projectdoc to document Maven plugins.

Space Blueprint

 We choose to base the projects on the Core Doctypes since we target users of the plugin as the audience.

 

If we would target developers that extend the plugin, we'd use the Software Development Doctypes to document components and design decisions.

Placeholder in Code Snippets


We use space properties to define the project's coordinates (and other properties) and use them to replace placeholders in code fragments.

Here is the snippet from the space homepage that defines the project coordinates as space properties.

These properties can then be used throughout the space to reference the current product version.

Here is the macro that takes advantage of these properties:

And here is the rendered result:

 

Transclude from Remote

In order to NCP (Never Copy Paste), we use transclusion macros to reference and show content from remote resources. For instance the System Transclusion Macro to display the contents of an XSD file stored in a Git repository:

The system identifier "git" references a space property.

The URL to resources in the Git repository is therefore only stored in one place.

 

It is usually advisable to reference information on the tag that matches your project coordinates. In this example we simply reference the master to always show the latest information.

The result is show on The smartics JBoss Modules XSD.

Displaying Project Artifact

With the Nexus Link Macro it is very easy render a link to the product of the project.

The link is clickable and references the JAR artifact on the Nexus server.

In this case we reference the application link instead of space properties.

Report Site

We still generate a Maven site for our projects. This site provides reports (that is generated information) we transclude to our wiki.