Using wf-build-plugin
wf-build-plugin
is a custom Maven plug-in
intended to carry out Widget Framework-specific tasks during the
publication build process. It is not used in the standard build
process, but you can make use of it by adding configuration elements
to your publication POM file.
Currently wf-build-plugin
has only one goal,
xslt
, which is designed to modify XML files
(primarily Escenic publication resources) by executing a series of
one or more XSL transformations. The xslt
goal must
be bound either to Maven's package
phase or to a
phase that runs after the package
phase in the
Maven build life-cycle.
In order to use wf-build-plugin
to modify one
of your publication resource files, you need to:
-
Write one or more XSL transformations that will make the changes you require.
-
Save the transformations somewhere in your project.
-
Add the necessary executions to the
wf-build-plugin
configuration in your publication POM file.
Two sample XSL transformations are included with the
demo
publication (in the
demo/src/main/resources/xsl
folder):
sort-groups-alphabetically.xsl
-
Gathers together all
ui:group
elements and sorts them alphabetically by theirui:label
element. filter-content-type.xsl
-
Removes duplicate
content-type
,field-group
relation-type-group
andui:group
elements.
So you could, for example, sort the ui:group
elements in the demo
publication's
content-type
resource by adding the following to
the wf-build-plugin
configuration in the
publication's POM file:
<plugin> <groupId>com.escenic.widget-framework</groupId> <artifactId>wf-build-plugin</artifactId> <version>${wf.version}</version> <executions> <execution> <id>run-xslt</id> <goals> <goal>xslt</goal> </goals> <phase>package</phase> <configuration> <xsltJobs> <xsltJob> <resource> META-INF/escenic/publication-resources/escenic/content-type </resource> <transformers> <transformer> src/main/resources/xsl/sort-groups-alphabetically.xsl </transformer> </transformers> </xsltJob> </xsltJobs> </configuration> </execution> </executions> </plugin>
wf-build-plugin
has only one configuration
element, xsltJobs
. xsltJobs
may
contain one or more xsltJob
elements, each of which
must contain:
-
A
resource
element containing the path of the XML file to be processed. -
A
transformers
element containing a sequence of one or moretransformer
, each of which contains the path of an XSL transformation to be applied to the resource.
If several transformer
elements are present
then they are applied in sequence, with the output from the first
transformation being passed into the second and so on. So you could
remove duplicates from the demo
publication's
content-type
resource as well by adding another
transformer
element as follows:
<configuration> <xsltJobs> <xsltJob> <resource> META-INF/escenic/publication-resources/escenic/content-type </resource> <transformers> <transformer> src/main/resources/xsl/sort-groups-alphabetically.xsl </transformer> <transformer> src/main/resources/xsl/filter-content-type.xsl </transformer> </transformers> </xsltJob> </xsltJobs> </configuration>
If you want to process more than one XML file in this way, then
you can do so by adding multiple xsltJob
elements,
one for each file.