Prevent FAQ plugin from crashing if there is no /xdocs directory.
git-svn-id: https://svn.apache.org/repos/asf/maven/maven-1/plugins/trunk@114399 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
d2c5c1fee7
commit
c7819a19fc
169
faq/plugin.jelly
169
faq/plugin.jelly
@ -19,104 +19,105 @@
|
||||
-->
|
||||
<define:tag name="performTransformation">
|
||||
<!-- NOTE: part of this tag implementation is based on jelly-code from xdoc-plugin -->
|
||||
<util:available file="${srcdir}">
|
||||
<util:file var="srcdirFile" name="${srcdir}"/>
|
||||
<j:set var="srcdir" value="${srcdirFile.getCanonicalPath()}"/>
|
||||
<util:file var="destdirFile" name="${destdir}"/>
|
||||
<j:set var="destdir" value="${destdirFile.getCanonicalPath()}"/>
|
||||
|
||||
<util:file var="srcdirFile" name="${srcdir}"/>
|
||||
<j:set var="srcdir" value="${srcdirFile.getCanonicalPath()}"/>
|
||||
<util:file var="destdirFile" name="${destdir}"/>
|
||||
<j:set var="destdir" value="${destdirFile.getCanonicalPath()}"/>
|
||||
<!-- construct a mapper, which is to help map input files to output path -->
|
||||
<util:replace var="fromPattern" oldChar="\" newChar="/" value="${srcdir}/*.fml"/>
|
||||
<util:replace var="toPattern" oldChar="\" newChar="/" value="${destdir}/*.xml"/>
|
||||
<j:if test="${mapper == null}">
|
||||
<j:new var="mapper" className="org.apache.maven.util.CaseInsensitiveGlobPatternMapper"/>
|
||||
</j:if>
|
||||
<j:setProperties object="${mapper}" from="${fromPattern}" to="${toPattern}"/>
|
||||
|
||||
<!-- construct a mapper, which is to help map input files to output path -->
|
||||
<util:replace var="fromPattern" oldChar="\" newChar="/" value="${srcdir}/*.fml"/>
|
||||
<util:replace var="toPattern" oldChar="\" newChar="/" value="${destdir}/*.xml"/>
|
||||
<j:if test="${mapper == null}">
|
||||
<j:new var="mapper" className="org.apache.maven.util.CaseInsensitiveGlobPatternMapper"/>
|
||||
</j:if>
|
||||
<j:setProperties object="${mapper}" from="${fromPattern}" to="${toPattern}"/>
|
||||
<!-- construct a mapper, which is to help map input dirs to output dirs (so we can create output paths) -->
|
||||
<util:replace var="fromDirPattern" oldChar="\" newChar="/" value="${srcdir}*"/>
|
||||
<util:replace var="toDirPattern" oldChar="\" newChar="/" value="${destdir}*"/>
|
||||
<j:new var="dirMapper" className="org.apache.maven.util.CaseInsensitiveGlobPatternMapper"/>
|
||||
<j:setProperties object="${dirMapper}" from="${fromDirPattern}" to="${toDirPattern}"/>
|
||||
|
||||
<!-- construct a mapper, which is to help map input dirs to output dirs (so we can create output paths) -->
|
||||
<util:replace var="fromDirPattern" oldChar="\" newChar="/" value="${srcdir}*"/>
|
||||
<util:replace var="toDirPattern" oldChar="\" newChar="/" value="${destdir}*"/>
|
||||
<j:new var="dirMapper" className="org.apache.maven.util.CaseInsensitiveGlobPatternMapper"/>
|
||||
<j:setProperties object="${dirMapper}" from="${fromDirPattern}" to="${toDirPattern}"/>
|
||||
<!-- scan for all .fml faq source files -->
|
||||
<ant:fileScanner var="faqFilenames">
|
||||
<ant:fileset dir="${srcdir}">
|
||||
<ant:patternset>
|
||||
<ant:include name="**/*.fml"/>
|
||||
</ant:patternset>
|
||||
</ant:fileset>
|
||||
</ant:fileScanner>
|
||||
|
||||
<!-- scan for all .fml faq source files -->
|
||||
<ant:fileScanner var="faqFilenames">
|
||||
<ant:fileset dir="${srcdir}">
|
||||
<ant:patternset>
|
||||
<ant:include name="**/*.fml"/>
|
||||
</ant:patternset>
|
||||
</ant:fileset>
|
||||
</ant:fileScanner>
|
||||
<j:set var="outputencoding" value="${maven.docs.outputencoding}"/>
|
||||
|
||||
<j:set var="outputencoding" value="${maven.docs.outputencoding}"/>
|
||||
<!-- loop each found .fml file and produce output .xml xdocs file -->
|
||||
<j:forEach var="faqFile" items="${faqFilenames.iterator()}">
|
||||
<!-- first, create the relative output-dir into the destdir -->
|
||||
<!-- e.g.: if source file is "xdocs/faqs/foofaq.fml" we need to create "target/generated-xdocs/faqs" -->
|
||||
<util:replace var="inDirForward" oldChar="\" newChar="/" value="${faqFile.parent}"/>
|
||||
<j:set var="outDir" value="${dirMapper.mapFileName(inDirForward).0}"/>
|
||||
<mkdir dir="${outDir}"/>
|
||||
|
||||
<!-- loop each found .fml file and produce output .xml xdocs file -->
|
||||
<j:forEach var="faqFile" items="${faqFilenames.iterator()}">
|
||||
<!-- first, create the relative output-dir into the destdir -->
|
||||
<!-- e.g.: if source file is "xdocs/faqs/foofaq.fml" we need to create "target/generated-xdocs/faqs" -->
|
||||
<util:replace var="inDirForward" oldChar="\" newChar="/" value="${faqFile.parent}"/>
|
||||
<j:set var="outDir" value="${dirMapper.mapFileName(inDirForward).0}"/>
|
||||
<mkdir dir="${outDir}"/>
|
||||
<!-- generate output file name -->
|
||||
<util:replace var="outFileForward" oldChar="\" newChar="/" value="${faqFile.toString()}"/>
|
||||
<j:set var="outFile" value="${mapper.mapFileName(outFileForward).0}"/>
|
||||
|
||||
<!-- generate output file name -->
|
||||
<util:replace var="outFileForward" oldChar="\" newChar="/" value="${faqFile.toString()}"/>
|
||||
<j:set var="outFile" value="${mapper.mapFileName(outFileForward).0}"/>
|
||||
<echo>Generating ${outFile} from ${faqFile}</echo>
|
||||
|
||||
<echo>Generating ${outFile} from ${faqFile}</echo>
|
||||
<!-- xml-parse .fml faq file -->
|
||||
<x:parse var="doc" xml="${faqFile}"/>
|
||||
<x:set var="root" select="$doc/*"/>
|
||||
|
||||
<!-- xml-parse .fml faq file -->
|
||||
<x:parse var="doc" xml="${faqFile}"/>
|
||||
<x:set var="root" select="$doc/*"/>
|
||||
<!-- produce a output xdoc xml file from parsed .fml source -->
|
||||
<j:file name="${outFile}" encoding="${outputencoding}" outputMode="xml">
|
||||
<document>
|
||||
|
||||
<!-- produce a output xdoc xml file from parsed .fml source -->
|
||||
<j:file name="${outFile}" encoding="${outputencoding}" outputMode="xml">
|
||||
<document>
|
||||
|
||||
<properties>
|
||||
<title><x:expr select="$root/title"/></title>
|
||||
</properties>
|
||||
<body>
|
||||
<section name="Frequently Asked Questions">
|
||||
<x:forEach select="$root/part">
|
||||
<p>
|
||||
<strong><x:expr select="title"/></strong>
|
||||
</p>
|
||||
<ol>
|
||||
<x:forEach select="faq">
|
||||
<li>
|
||||
<x:element name="a">
|
||||
<x:attribute name="href">#<x:expr select="@id"/></x:attribute>
|
||||
<x:copyOf select="question/node()"/>
|
||||
</x:element>
|
||||
</li>
|
||||
</x:forEach>
|
||||
</ol>
|
||||
</x:forEach>
|
||||
</section>
|
||||
|
||||
<x:forEach select="$root/part">
|
||||
<x:element name="section">
|
||||
<x:attribute name="name"><x:expr select="title"/></x:attribute>
|
||||
|
||||
<x:forEach select="faq">
|
||||
<dl>
|
||||
<dt>
|
||||
<properties>
|
||||
<title><x:expr select="$root/title"/></title>
|
||||
</properties>
|
||||
<body>
|
||||
<section name="Frequently Asked Questions">
|
||||
<x:forEach select="$root/part">
|
||||
<p>
|
||||
<strong><x:expr select="title"/></strong>
|
||||
</p>
|
||||
<ol>
|
||||
<x:forEach select="faq">
|
||||
<li>
|
||||
<x:element name="a">
|
||||
<x:attribute name="name"><x:expr select="@id"/></x:attribute>
|
||||
<x:attribute name="href">#<x:expr select="@id"/></x:attribute>
|
||||
<x:copyOf select="question/node()"/>
|
||||
</x:element>
|
||||
</dt>
|
||||
<dd>
|
||||
<x:copyOf select="answer/node()"/>
|
||||
</dd>
|
||||
</dl>
|
||||
</li>
|
||||
</x:forEach>
|
||||
</ol>
|
||||
</x:forEach>
|
||||
</x:element>
|
||||
</x:forEach>
|
||||
</body>
|
||||
</document>
|
||||
</j:file>
|
||||
</j:forEach>
|
||||
</section>
|
||||
|
||||
<x:forEach select="$root/part">
|
||||
<x:element name="section">
|
||||
<x:attribute name="name"><x:expr select="title"/></x:attribute>
|
||||
|
||||
<x:forEach select="faq">
|
||||
<dl>
|
||||
<dt>
|
||||
<x:element name="a">
|
||||
<x:attribute name="name"><x:expr select="@id"/></x:attribute>
|
||||
<x:copyOf select="question/node()"/>
|
||||
</x:element>
|
||||
</dt>
|
||||
<dd>
|
||||
<x:copyOf select="answer/node()"/>
|
||||
</dd>
|
||||
</dl>
|
||||
</x:forEach>
|
||||
</x:element>
|
||||
</x:forEach>
|
||||
</body>
|
||||
</document>
|
||||
</j:file>
|
||||
</j:forEach>
|
||||
</util:available>
|
||||
</define:tag>
|
||||
|
||||
</define:taglib>
|
||||
|
||||
@ -36,6 +36,15 @@
|
||||
<role>Developer</role>
|
||||
</roles>
|
||||
</developer>
|
||||
<developer>
|
||||
<name>Eric Pugh</name>
|
||||
<id>epugh</id>
|
||||
<email>epugh@upstate.com</email>
|
||||
<organization>Upstate</organization>
|
||||
<roles>
|
||||
<role>Java Developer</role>
|
||||
</roles>
|
||||
</developer>
|
||||
</developers>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
||||
@ -7,6 +7,9 @@
|
||||
|
||||
<body>
|
||||
<release version="1.2" date="in CVS">
|
||||
<action dev="epugh" type="fix">
|
||||
Only run when an xdocs directory exists.
|
||||
</action>
|
||||
<action dev="dion" type="fix">
|
||||
Fix MAVEN-973. xdocs source hardcoded.
|
||||
</action>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user