Create a New Doxia Module
First, the easiest way is to create a POM with doxia-modules as parent:
<project>
<parent>
<groupId>org.apache.maven.doxia</groupId>
<artifactId>doxia-modules</artifactId>
<version>2.0.0</version> <!-- Latest release -->
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>doxia-module-my</artifactId>
<name>Doxia :: MY Module</name>
...
</project>
Secondly, you should implement some Doxia classes, depending on what features you want: parsing or generating markup.
Parsing
-
MyParser class
import org.apache.maven.doxia.parser.AbstractParser; import org.apache.maven.doxia.parser.Parser; import org.codehaus.plexus.component.annotations.Component; @Component( role = Parser.class, hint = "my" ) public class MyParser extends AbstractParser { ... }
Depending on the type markup, extending
AbstractTextParser
,AbstractXmlParser
orXhtmlBaseParser
may give you more features. -
MyParseException class (optional)
import org.apache.maven.doxia.parser.ParseException; public class MyParseException extends ParseException { ... }
-
MyParserModule class
import org.apache.maven.doxia.parser.module.AbstractParserModule; import org.codehaus.plexus.component.annotations.Component; @Component( role = ParserModule.class, hint = "my" ) public class MyParserModule extends AbstractParserModule { ... }
Generating
-
MySink class
import org.apache.maven.doxia.sink.SinkAdapter; public class MySink extends SinkAdapter { ... }
Depending on the type markup, extending
AbstractTextSink
,AbstractXmlSink
orXhtmlBaseSink
may give you more features. -
MySinkFactory class
import org.apache.maven.doxia.sink.SinkFactory; import org.codehaus.plexus.component.annotations.Component; @Component( role = SinkFactory.class, hint = "my" ) public class MySinkFactory extends SinkFactory { ... }
Depending on the type markup, extending
AbstractTextSinkFactory
,AbstractXmlSinkFactory
orAbstractBinarySinkFactory
may give you more features.