RichFaces 4.0 Build & Directory Structure

 

GitHub repositories root: https://github.com/richfaces

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

docs

RichFaces Framework Documentation

 

sandbox

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

 

qa

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.

 

build/bom

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.

build/parent

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

 

build/dist

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

 

aggregators

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 http://anonsvn.jboss.org/repos/richfaces/trunk/ui/pom.xml 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

cdk

Primary modules for the component development kit.

core

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

 

core

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

 

components

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.

components/dist

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.

dev-examples

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.

 

showcase

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

archetypes

Contains RichFaces archetypes

tests

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.

docs

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