blob: 4f867ec3acbd5f7d7541288f5c2d289435816b7d [file] [log] [blame]
<?xml version="1.0" encoding="ISO-8859-1"?>
<project xmlns:j="jelly:core" xmlns:ant="jelly:ant" xmlns:util="jelly:util" xmlns:maven="jelly:maven">
<goal name="directory:init">
<!-- Dir for generated source files -->
<j:set var="targetDir" value="${maven.ldap.server.schema.target.dir}"/>
<j:set var="schemaDir" value="${maven.ldap.server.schema.dir}"/>
<j:set var="schemas" value="${maven.ldap.server.schemas}"/>
</goal>
<goal name="directory:prepare-filesystem">
<j:if test="${!targetDir.equals('MAVEN_EVE_TARGET_DIR_NOT_SET')}">
<ant:mkdir dir="${maven.build.dir}/schema"/>
</j:if>
</goal>
<goal name="directory:generate"
prereqs="directory:prepare-filesystem">
<j:if test="${!targetDir.equals('MAVEN_EVE_TARGET_DIR_NOT_SET')}">
<ant:path id="maven.ldap.server.schema.compile.src.set"
location="${maven.build.dir}/schema"/>
<maven:addPath id="maven.compile.src.set"
refid="maven.ldap.server.schema.compile.src.set"/>
<!-- TODO: use this for src.dir, but smarter for individual schemas -->
<!-- TODO: it seems that if target exists but the flagfile doesn't, it doesn't compile? -->
<ant:uptodate property="maven.ldap.server.schema.buildNotRequired" targetfile="${maven.build.dir}/schema/.flagfile">
<ant:srcfiles
dir = "${maven.ldap.server.schema.dir}"
includes = "*.schema"/>
</ant:uptodate>
<j:set var="schemaBuildNotRequired" value="${maven.ldap.server.schema.buildNotRequired}" />
<j:if test="${schemaBuildNotRequired == null}">
<j:if test="${!schemas.equals('MAVEN_EVE_SCHEMAS_NOT_SET')}">
<util:tokenize var="schemas" delim=",">
${maven.ldap.server.schemas}
</util:tokenize>
<j:forEach var="schema" items="${schemas.iterator()}">
<j:set var="ownerProp" value="maven.ldap.server.schema.owner.${schema}"/>
<j:set var="owner" value="${context.getVariable(ownerProp)}"
defaultValue="${maven.ldap.server.schema.ownerDefault}"/>
<j:set var="packageProp" value="maven.ldap.server.schema.package.${schema}"/>
<j:set var="package" value="${context.getVariable(packageProp)}"
defaultValue="${maven.ldap.server.schema.packageDefault}"/>
<j:set var="depsProp" value="maven.ldap.server.schema.deps.${schema}"/>
<j:set var="deps" value="${context.getVariable(depsProp)}"/>
<!-- Basedir sysprop not set when not forking -->
<j:set var="noop" value="${systemScope.setProperty('basedir', basedir)}"/>
<j:useBean var="task" class="org.apache.ldap.server.tools.schema.DirectorySchemaToolTask"
name="${schema}" owner="${owner}" package="${package}" dependencies="${deps}"/>
<j:expr value="${task.execute()}"/>
<j:if test="${task.hasFaulted()}">
<fail message="${task.getLastFault().getMessage()}"/>
</j:if>
<echo>Generated schema producer classes for ${schema}.schema</echo>
</j:forEach>
</j:if>
<ant:touch file="${maven.build.dir}/schema/.flagfile" />
</j:if>
</j:if>
</goal>
<!--
<preGoal name="java:compile">
<j:if test="${!schemaDir.equals('MAVEN_EVE_SCHEMA_DIR_NOT_SET')}">
<attainGoal name="directory:schema"/>
</j:if>
</preGoal>
-->
<goal name="directory:schema">
<attainGoal name="directory:init"/>
<attainGoal name="directory:generate"/>
</goal>
</project>