maven-plugins/modello/plugin.jelly
2007-04-10 01:12:11 +00:00

238 lines
10 KiB
XML

<?xml version="1.0" encoding="UTF-8"?>
<!--
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-->
<project
xmlns:j="jelly:core"
xmlns:define="jelly:define"
xmlns:maven="jelly:maven"
xmlns:x="jelly:xml"
xmlns:util="jelly:util"
xmlns:assert="assert"
xmlns:ant="jelly:ant"
xmlns:doc="doc"
xmlns:modello="modello">
<define:taglib uri="modello">
<define:jellybean name="generate" method="generate" className="org.apache.maven.plugins.modello.ModelloCliWrapper" />
</define:taglib>
<goal name="modello" prereqs="modello:modello" />
<goal name="modello:modello" description="Code generation based on the property maven.modello.plugins">
<maven:paramCheck value="${maven.modello.plugins}" fail="true">The property "maven.modello.plugins" must be defined.</maven:paramCheck>
<j:set var="modelloPlugins" value="${maven.modello.plugins}"/>
<j:forEach var="modelloPlugin" items="${modelloPlugins}">
<attainGoal name="modello:${modelloPlugin}"/>
</j:forEach>
</goal>
<!-- INTERNAL - Checks that required settings are set -->
<goal name="modello:check-settings">
<maven:paramCheck value="${maven.modello.model}" fail="true">The property "maven.modello.model" must be defined.</maven:paramCheck>
<assert:assertFileExists file="${maven.modello.model}"/>
<util:file var="modelFile" name="${maven.modello.model}"/>
<x:parse var="modelDoc" xml="${modelFile}"/>
<x:set var="modelId" select="string($modelDoc/model/id)"/>
<j:set var="maven_modello_model_id" value="${modelId}" scope="parent"/>
<maven:paramCheck value="${maven.modello.packageWithVersion}" fail="true">The property "maven.modello.packageWithVersion" must be defined.</maven:paramCheck>
<maven:paramCheck value="${maven.modello.version}" fail="true">The property "maven.modello.version" must be defined.</maven:paramCheck>
</goal>
<!-- Java Model -->
<goal name="modello:java" prereqs="modello:check-settings" description="Generates Java Pojos of the DataModel.">
<maven:paramCheck value="${maven.modello.java.targetDirectory}" fail="true">The property "maven.modello.java.targetDirectory" must be defined.</maven:paramCheck>
<ant:mkdir dir="${maven.modello.java.targetDirectory}"/>
<ant:path id="modello.sources" location="${maven.modello.java.targetDirectory}" />
<maven:addPath id="maven.compile.src.set" refid="modello.sources" />
<j:set var="sourcesPresent" value="true" scope="parent"/>
<modello:generate
model="${maven.modello.model}"
type="java"
packageWithVersion="${maven.modello.packageWithVersion}"
version="${maven.modello.version}"
targetDirectory="${maven.modello.java.targetDirectory}" />
</goal>
<!-- XPP3 Reader/Writer -->
<goal name="modello:xpp3" prereqs="modello:xpp3-reader, modello:xpp3-writer" description="Generates classes to read/write the model from/into a xml file using Xpp3."/>
<goal name="modello:xpp3-reader" prereqs="modello:java" description="Generates the class to read the model from a xml file using Xpp3.">
<modello:generate
model="${maven.modello.model}"
type="xpp3-reader"
packageWithVersion="${maven.modello.packageWithVersion}"
version="${maven.modello.version}"
targetDirectory="${maven.modello.java.targetDirectory}" />
</goal>
<goal name="modello:xpp3-writer" prereqs="modello:java" description="Generates the class to write the model into a xml file using Xpp3.">
<modello:generate
model="${maven.modello.model}"
type="xpp3-writer"
packageWithVersion="${maven.modello.packageWithVersion}"
version="${maven.modello.version}"
targetDirectory="${maven.modello.java.targetDirectory}" />
</goal>
<!-- STAX Reader/Writer -->
<goal name="modello:stax" prereqs="modello:stax-reader, modello:stax-writer" description="Generates classes to read/write the model from/into a xml file using Stax."/>
<goal name="modello:stax-reader" prereqs="modello:java" description="Generates the class to read the model from a xml file using Stax.">
<modello:generate
model="${maven.modello.model}"
type="stax-reader"
packageWithVersion="${maven.modello.packageWithVersion}"
version="${maven.modello.version}"
targetDirectory="${maven.modello.java.targetDirectory}" />
</goal>
<goal name="modello:stax-writer" prereqs="modello:java" description="Generates the class to write the model into a xml file using Stax.">
<modello:generate
model="${maven.modello.model}"
type="stax-writer"
packageWithVersion="${maven.modello.packageWithVersion}"
version="${maven.modello.version}"
targetDirectory="${maven.modello.java.targetDirectory}" />
</goal>
<!-- DOM4J Reader/Writer -->
<goal name="modello:dom4j" prereqs="modello:dom4j-reader, modello:dom4j-writer" description="Generates classes to read/write the model from/into a xml file using Dom4j."/>
<goal name="modello:dom4j-reader" prereqs="modello:java" description="Generates the class to read the model from a xml file using Dom4j.">
<modello:generate
model="${maven.modello.model}"
type="dom4j-reader"
packageWithVersion="${maven.modello.packageWithVersion}"
version="${maven.modello.version}"
targetDirectory="${maven.modello.java.targetDirectory}" />
</goal>
<goal name="modello:dom4j-writer" prereqs="modello:java" description="Generates the class to write the model into a xml file using Dom4j.">
<modello:generate
model="${maven.modello.model}"
type="dom4j-writer"
packageWithVersion="${maven.modello.packageWithVersion}"
version="${maven.modello.version}"
targetDirectory="${maven.modello.java.targetDirectory}" />
</goal>
<!-- JDOM Writer -->
<goal name="modello:jdom" prereqs="modello:jdom-writer" description="Generates classes to write the model into a xml file using JDom."/>
<goal name="modello:jdom-writer" prereqs="modello:java" description="Generates classes to write the model into a xml file using JDom.">
<modello:generate
model="${maven.modello.model}"
type="jdom-writer"
packageWithVersion="${maven.modello.packageWithVersion}"
version="${maven.modello.version}"
targetDirectory="${maven.modello.java.targetDirectory}" />
</goal>
<!-- JPOX Storage -->
<goal name="modello:jpox" prereqs="modello:jpox-store, modello:jpox-jdo-mapping, modello:jpox-metadata-class" description="Generates classes to read/store the model in a database using JPox."/>
<goal name="modello:jpox-store" description="Generates the persistence mechanism using JPOX.">
<modello:generate
model="${maven.modello.model}"
type="jpox-store"
packageWithVersion="${maven.modello.packageWithVersion}"
version="${maven.modello.version}"
targetDirectory="${maven.modello.java.targetDirectory}" />
</goal>
<goal name="modello:jpox-jdo-mapping" description="Generates the JDO mapping for JPOX.">
<modello:generate
model="${maven.modello.model}"
type="jpox-jdo-mapping"
packageWithVersion="${maven.modello.packageWithVersion}"
version="${maven.modello.version}"
targetDirectory="${maven.modello.java.targetDirectory}" />
</goal>
<goal name="modello:jpox-metadata-class" description="Generates MetaData class for jpox.">
<modello:generate
model="${maven.modello.model}"
type="jpox-metadata-class"
packageWithVersion="${maven.modello.packageWithVersion}"
version="${maven.modello.version}"
targetDirectory="${maven.modello.java.targetDirectory}" />
</goal>
<!-- XSD generation -->
<goal name="modello:xsd" prereqs="modello:check-settings" description="Generates an XML Schema for the xml file used to store the model.">
<maven:paramCheck value="${maven.modello.xsd.targetDirectory}" fail="true">The property "maven.modello.xsd.targetDirectory" must be defined.</maven:paramCheck>
<ant:mkdir dir="${maven.modello.xsd.targetDirectory}"/>
<modello:generate
model="${maven.modello.model}"
type="xsd"
packageWithVersion="${maven.modello.packageWithVersion}"
version="${maven.modello.version}"
targetDirectory="${maven.modello.xsd.targetDirectory}" />
</goal>
<!-- XDOC generation -->
<goal name="modello:xdoc" prereqs="modello:check-settings" description="Generates a xdoc file to document the model.">
<maven:paramCheck value="${maven.modello.xdoc.targetDirectory}" fail="true">The property "maven.modello.xdoc.targetDirectory" must be defined.</maven:paramCheck>
<ant:mkdir dir="${maven.modello.xdoc.targetDirectory}"/>
<modello:generate
model="${maven.modello.model}"
type="xdoc"
packageWithVersion="${maven.modello.packageWithVersion}"
version="${maven.modello.version}"
targetDirectory="${maven.modello.xdoc.targetDirectory}" />
</goal>
<!-- Site report (XDOC + XSD) -->
<goal name="maven-modello-plugin:register" description="Register the model documentation." prereqs="modello:check-settings">
<doc:registerReport
name="Model documentation"
pluginName="maven-modello-plugin-xdoc"
link="${maven_modello_model_id}"
description="Documentation of the model."/>
<doc:registerReport
name="Model schema"
pluginName="maven-modello-plugin-xsd"
link="${maven_modello_model_id}-${maven.modello.version}"
target="_blank"
fileSuffix=".xsd"
description="Schema for the xml model."/>
</goal>
<goal name="maven-modello-plugin:deregister" description="Deregister the model documentation.">
<doc:deregisterReport name="Model documentation"/>
<doc:deregisterReport name="Model schema"/>
</goal>
<goal name="maven-modello-plugin-xdoc:report" description="Called by site to generate the model documentation." prereqs="modello:xdoc"/>
<goal name="maven-modello-plugin-xsd:report" description="Called by site to generate the model schema." prereqs="modello:xsd"/>
</project>