Apache MyFaces
Project Documentation
Foundation

Setting up your project

Configuring your pom.xml

According to your jsf version you will need to set the required dependencies.

In jsf 1.1 (use doclets).

        <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-api</artifactId>
            <version>1.1.6</version>
            <scope>provided</scope>
        </dependency>

In jsf 1.2 (use annotations).

        <dependency>
            <groupId>org.apache.myfaces.core</groupId>
            <artifactId>myfaces-api</artifactId>
            <version>1.2.6</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.apache.myfaces.buildtools</groupId>
            <artifactId>myfaces-builder-annotations</artifactId> 
            <version>1.0.2</version>
            <scope>provided</scope>
        </dependency>

If you are working with converters and validators, you should use myfaces commons dependencies as base for it:

        <dependency>
            <groupId>org.apache.myfaces.commons</groupId>
            <artifactId>myfaces-validators12</artifactId>
            <version>1.0.0</version>
            <scope>compile</scope>
        </dependency>
        
        <dependency>
            <groupId>org.apache.myfaces.commons</groupId>
            <artifactId>myfaces-converters12</artifactId>
            <version>1.0.0</version>
            <scope>compile</scope>
        </dependency>

Then you need to define the plugin configuration in your projects pom.xml like this:

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>**/*.vm</exclude>
                </excludes>
            </resource>    
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.myfaces.buildtools</groupId>
                <artifactId>myfaces-builder-plugin</artifactId>
                <version>1.0.2</version>
                <executions>
                    <execution>
                      <id>buildmetadata</id>
                      <goals>
                        <goal>build-metadata</goal>
                        <!-- when use components -->
                        <goal>make-components</goal>
                        <goal>make-tags</goal>
                        
                        <!-- when use validators -->
                        <goal>make-validators</goal>
                        <goal>make-validator-tags</goal>
                        
                        <!-- when use converters -->
                        <goal>make-converter-tags</goal>                        
                      </goals>
                      <configuration>
                            <!-- Use 1.1 or 1.2 according to your jsf version -->
                            <jsfVersion>1.2</jsfVersion>
                      </configuration>
                    </execution>
                    <execution>
                      <id>makefacesconfig</id>
                      <configuration>
                          <xmlFile>META-INF/faces-config.xml</xmlFile>
                      </configuration>
                      <goals>
                          <goal>make-config</goal>
                      </goals>
                    </execution>
                    <execution>
                        <id>maketld</id>
                        <configuration>
                            <xmlFile>META-INF/mycomponents.tld</xmlFile>
                            <!-- as templateFile you can use tomahawk.vm or tomahawk12.vm -->
                            <templateFile>mycomponents.tld.vm</templateFile>
                            <params>
                               <shortname>mycomponents</shortname>
                               <uri>http://www.myorganitzation.org/mycomponents</uri>
                               <displayname>Custom tag library.</displayname>
                               <description>Enhanced standard JSP actions and custom MyFaces actions.</description>
                            </params>
                        </configuration>
                        <goals>
                            <goal>make-config</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>makefaceletstaglib</id>
                        <configuration>
                            <xmlFile>META-INF/mycomponents.taglib.xml</xmlFile>
                            <xmlBaseFile>src/main/conf/META-INF/facelets-taglib-base.xml</xmlBaseFile>
                            <templateFile>facelets-taglib.vm</templateFile>
                            <params>
                               <shortname>mycomponents</shortname>
                               <uri>http://www.myorganitzation.org/mycomponents</uri>
                            </params>
                        </configuration>
                        <goals>
                            <goal>make-config</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

Customizing your templates

The plugin uses velocity templates to generate files, and on its jar there are some already defined. If you need some file (like a template for tld) you can find the most up to date template on tomahawk core or core12.

More detailed information can be found here.