RichFaces 4.0 Build & Directory Structure


    GitHub repositories root:

    Fisheye is currently in progress of migration

    Framework Modules

    The latest updates, and features of the project are located in the master branch of following repositories:


    build                  richfaces-root-aggregator
         /bom              richfaces-bom
         /parent           richfaces-root-parent
         /dist             richfaces-aggregator
    cdk                    richfaces-cdk
    core                   richfaces-core-{api,impl}
    components             richfaces-ui-*
         /dist             richfaces-components-{api,impl}
    dev-examples               demos
    showcase               richfaces-showcase
    archetypes             richfaces-archetype-simpleapp

    Framework Build Resources


    parent                 richfaces-parent
    checkstyle             richfaces-checkstyle
    shade-transformers     richfaces-shade-transformers
    vdl-doc                faces-vdl-documentation



    Separated Modules


    RichFaces Framework Documentation



    When components, examples, or other items are in prototyping, or early development they are placed into the /sandbox directory following the structure shown below.  TODO: link to sandbox process documents



    Testing applications and tests by RichFaces Quallity Assurance team.


    Parents, BOMs, and Aggregators and Distribution

    The RichFaces project follows a well established maven project structure where we have defined parent, aggregators, and a Bill of Materials (BOM) projects.



    Defines all runtime dependencies for RichFaces, and can be imported by examples, and application developers to inherit the required project dependencies, and versions.  See How to add RichFaces 4.x to maven based project

    for more.


    The RichFaces project actually has several primary "parent" modules.  You could think of these parent projects and parent, grandparents, and great-grandparents.  The idea here is to centralize as many common settings, and information as possible, while allowing sub-projects to update as needed.


    • richfaces-parent
      • The great-grandparent for everything in RichFaces
      • Contains basic license, project, repository information
      • Released rarely, and separately from main project in /trunk
    • richfaces-root-parent
      • The grandparent for framework modules
      • Contains more specific build, test dependencies, plugin, and release specific settings
    • richfaces-xxx-parent
      • The direct parent for a sub-project
        • /trunk/xxx/parent
      • Many of the major sub-projects contain their own parent
      • Defines any module specific settings



    Contains the top level assembler for construction of the the primary project release artifacts.



    Aggregators pom.xml files profile a common root for sub-projects, and track modules to include in the build.  They contain almost no other build information.  So for example simple states what modules are build as part of this build.


    The root aggregator contain a small amount of additional settings related to release, but in general if build configuration is going here it probably needs to be moved.

    Pom Inheritance Guidelines

    To support this structure there is a requirement in the order of inheritance of the various pom, bom files.


    [richfaces-parent] ---> [richfaces-root-parent (imports richfaces-bom)] --> [richfaces-<module>-parent] --> [sub-project pom.xmls]


    Module sub-projects only need to use the module parent as it's parent.  Aggregators can simply inherit from richfaces-parent as they have very few requirements.

    Module Details & Descriptions


    Primary modules for the component development kit.


    The RichFaces core API, and implementations.  This is the common base and functionality for the project components.



    Contains classes, and resources that are common and shared across two or more of the /ui-* modules.



    Starting in RichFaces 4.0 we are going to separate components by type.  This makes it easier to work with a sub-set of components at once, and logically breaks up functionality.


    The ui modules require a top level assembler to be able to package and combine the component artifacts.  This uses the maven-shade plugin to handle the merging of jars.


    Since examples are consumers of RichFaces, and not directly part of the runtime they do not have to follow the module requirements above.  The examples all share a common richfaces-example-parent.  However they must demonstrate proper usage of the project bom's.



    RichFaces Showcase is main demonstrastion example of framework usage.


    other examples

    Development examples may be promoted to top-level repository since they can be consumed for demonstration purposes.

    current examples: tweetstream


    Contains RichFaces archetypes


    Contains all QE related sub-projects, functional, and integration tests.  Although this module is not required to follow the same guidelines as the core modules it should strive to conform, and be accessible and useable to outside developers.


    Contains all project wide documentation, such as development guide, migration guide, etc....  It has its own specific dependencies and build process.