RichFaces CDK project

    Maven project

    As of the 4.0.0.Final release the RichFaces CDK integrates only with the Maven build tool - the main build system for RichFaces.

    Prerequirements

     

    CDK Project

    The easiest way to create Maven project is with a Maven archetype, but, unfortunately, all Richfaces archetypes are designed to be used inside the project itself, so just create simple java project:

     

    mvn archetype:generate -DarchetypeArtifactId=maven-archetype-quickstart

     

    Enter your own groupId, artifactId, version and Java package name.


    As we now have a basic Maven project, let’s customise it for the CDK:

    Java Compiler Setings

    By default, Maven compiles Java files for JRE 1.4. The CDK uses Java 5 features ( Annotations, Generics ) so change the compiler plugin settings to use the proper source level:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.0.2</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
     
    

     

    JEE Library dependency

    Any JSF Component project requires at least the jsf-api library, and, most likely the el-api and servlet-api libraries. To avoid adding them one by one, you can use the single jee6 jar. Add these lines to the project pom.xml:

    ….......

    <dependencies>
        ....
    
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
       </dependency>
       ....
    
    </dependencies>
    Keep in mind, that this library doesn’t have any code so it cannot be used to run tests.
    

    RichFaces CDK Dependency

    Next add the Richfaces CDK annotations dependency:

    <dependencies>
        ....
    
        <dependency>
            <groupId>org.richfaces.cdk</groupId>
            <artifactId>annotations</artifactId>
            <version>4.1.0-SNAPSHOT</version>
       </dependency>
       ....
    
    </dependencies>
    


    RichFaces CDK Plugin

    Until now, our project is just an ordinary Java library. To convert it into JSF component project all that we need to do is add the RichFaces CDK plugin:

    <build>
        <plugins>
            …..
            <plugin>
                <groupId>org.richfaces.cdk</groupId>
                <artifactId>maven-cdk-plugin</artifactId>
                <version>4.1.0-SNAPSHOT</version>
                <configuration>
                    <!-- project specific settings, see below -->
                </configuration>
                <executions>
                    <execution>
                        <id>cdk-generate-sources</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    

     

    There you go, now we can start component development !


    Plugin configuration

    As with most Maven plugins, the RichFaces CDK uses conventions for the settings that are appropriate for the most projects. Of course, everything can be customised by configuration options:

     

    OptionDefault valueDescription
    <facesConfigs>src/main/config/**/*.xmlList of Maven fileSet’s used  to get additional xml configuration files. Format:
    <fileset>
          <directory>src/foo</directory>
                  <includes>
                    <include>*.xml</include>

                     …........
                  </includes>
                  [<excludes>
                    <exclude>bar.xml</exclude>

                     …........
                  </excludes>]
                </fileset>
    <templates>src/main/templates/**/*.xmlRenderer Templates, the format is same as for <facesConfigs> option.
    <sourceIncludes>**/*.javaList of patterns for source files to be processed by CDK:
    <sourceIncludes>
        <include>foo/bar/*.java</include>
    <sourceIncludes>
    <sourceExcludes>--Patterns for files to be excluded from CDK processing