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.2.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. Parsers, parser modules and sink factories are JSR-330 components, named by @Named; the doxia-modules parent already writes the component index. For details, see Maven & JSR-330.
Parsing
-
MyParser class
import javax.inject.Named; import javax.inject.Singleton; import org.apache.maven.doxia.parser.AbstractParser; @Singleton @Named("my") public class MyParser extends AbstractParser { ... }Depending on the type markup, extending
AbstractTextParser,AbstractXmlParserorXhtml5BaseParsermay give you more features. -
MyParseException class (optional)
import org.apache.maven.doxia.parser.ParseException; public class MyParseException extends ParseException { ... } -
MyParserModule class
import javax.inject.Named; import javax.inject.Singleton; import org.apache.maven.doxia.parser.module.AbstractParserModule; @Singleton @Named("my") public class MyParserModule extends AbstractParserModule { ... }
Generating
-
MySink class
import org.apache.maven.doxia.sink.impl.SinkAdapter; public class MySink extends SinkAdapter { ... }Depending on the type markup, extending
AbstractTextSink,AbstractXmlSinkorXhtml5BaseSinkmay give you more features. -
MySinkFactory class
import javax.inject.Named; import javax.inject.Singleton; import org.apache.maven.doxia.sink.SinkFactory; @Singleton @Named("my") public class MySinkFactory implements SinkFactory { ... }Depending on the type markup, extending
AbstractTextSinkFactoryorAbstractXmlSinkFactorymay give you more features.

