创建一个新的 Doxia 模块

首先,最简单的方法是创建一个以doxia-modules作为父级的 POM:

<project>
  <parent>
    <groupId>org.apache.maven.doxia</groupId>
    <artifactId>doxia-modules</artifactId>
    <version>1.9.1</version> <!-- Latest release -->
  </parent>
  <modelVersion>4.0.0</modelVersion>
  <artifactId>doxia-module-my</artifactId>
  <name>Doxia :: MY Module</name>

  ...
</project>

其次,你应该实现一些 Doxia 类,这取决于你想要什么特性:解析或生成标记。

解析

  • MyParser
    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
    {
    ...
    }

    根据类型标记,扩展AbstractTextParserAbstractXmlParser可能XhtmlBaseParser会为您提供更多功能。

  • MyParseException类(可选)
    import org.apache.maven.doxia.parser.ParseException;
    
    public class MyParseException
        extends ParseException
    {
    ...
    }
  • MyParserModule
    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
    {
    ...
    }

生成

  • MySink
    import org.apache.maven.doxia.sink.SinkAdapter;
    
    public class MySink
        extends SinkAdapter
    {
    ...
    }

    根据类型标记,扩展AbstractTextSinkAbstractXmlSink可能XhtmlBaseSink会为您提供更多功能。

  • MySinkFactory
    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
    {
    ...
    }

    根据类型标记,扩展AbstractTextSinkFactoryAbstractXmlSinkFactory可能AbstractBinarySinkFactory会为您提供更多功能。

参考