Skip to content
buehner edited this page Jan 24, 2014 · 16 revisions

This page explains the basic concepts of the SHOGun2 software design.

Goals of the SHOGun2 software design

SHOGun2 is intended to be

  • Reusable
  • Extendable
  • Maintainable

Therefore SHOGun2 shall consist of (preferably independent) modules. To achieve this, SHOGun2 is organized as a Maven Multi Module project.

Modularity of SHOGun2

Maven is using POMs (XML files) to configure the build of a project. Each POM results in a (maven) artifact with some kind of (packaging) type, for example jar, war, pom or maven-archetype.

A Maven multi module project is realized by defining a root/super/parent POM (of packaging type pom) with a list of modules (which are in fact subfolders with custom POMs). On top of that it is possible that POMs (of modules) inherit (and possibly overwrite) the properties of their parent POM, which makes it easy to maintain a simple and clear project configuration.

The modules of SHOGun2 are structured in the following way:

  • shogun2 (pom, root)
    • core (pom, the core-module, which has submodules again)
      • model (jar, data models of the core)
      • dao (jar, data access objects)
      • service (jar, service layer with business logic)
    • init (jar, module for content initialization)
    • web (jar, web/controller layer to provide some interface)
    • webapp-archetype (maven-archetype, template artifact for the quick creation of a SHOGun2-based war-artifact, i.e. webapplication)