You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Maven为API模块的Javadoc实现Shade与重定位?

实现Javadoc的包重定位方案

方法1:自定义Doclet配合maven-javadoc-plugin

maven-javadoc-plugin本身不带包重定位功能,但可以通过自定义Doclet实现包名批量替换:

  • 编写自定义Doclet类,在处理类文档、方法引用时,将原引擎的包名替换为重定位后的子包名(比如把com.original.engine替换为com.yourgame.engine)
  • 在pom.xml中配置maven-javadoc-plugin使用该自定义Doclet,示例配置如下:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>3.6.3</version>
    <configuration>
        <doclet>com.yourgame.doclet.RelocatingDoclet</doclet>
        <docletArtifact>
            <groupId>com.yourgame</groupId>
            <artifactId>your-custom-doclet</artifactId>
            <version>1.0.0</version>
        </docletArtifact>
        <additionalparam>-oldPackage com.original.engine -newPackage com.yourgame.engine</additionalparam>
    </configuration>
</plugin>

方法2:先Shade代码再生成Javadoc

利用maven-shade-plugin先完成代码重定位,再基于重定位后的代码生成Javadoc:

  1. 配置maven-shade-plugin的relocation规则,将原引擎包映射到目标子包:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.5.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <relocations>
                    <relocation>
                        <pattern>com.original.engine</pattern>
                        <shadedPattern>com.yourgame.engine</shadedPattern>
                    </relocation>
                    <relocation>
                        <pattern>com.original.engine.api</pattern>
                        <shadedPattern>com.yourgame.api</shadedPattern>
                    </relocation>
                </relocations>
            </configuration>
        </execution>
    </executions>
</plugin>
  1. 执行mvn shade:shade生成重定位后的类文件和jar
  2. 调整maven-javadoc-plugin配置,基于重定位后的类生成文档:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>3.6.3</version>
    <configuration>
        <sourcepath>${project.build.directory}/classes</sourcepath>
        <!-- 若shade后类文件在其他目录,调整此处路径 -->
    </configuration>
</plugin>

方法3:生成Javadoc后批量替换包名

如果不想编写自定义Doclet,可先生成原始Javadoc,再用maven-replacer-plugin批量替换文档中的旧包名:

  1. 先用maven-javadoc-plugin生成原始文档
  2. 配置replacer插件替换所有包名引用:
<plugin>
    <groupId>com.google.code.maven-replacer-plugin</groupId>
    <artifactId>replacer</artifactId>
    <version>1.5.3</version>
    <executions>
        <execution>
            <phase>post-site</phase>
            <goals>
                <goal>replace</goal>
            </goals>
            <configuration>
                <file>${project.build.directory}/site/apidocs</file>
                <includes>
                    <include>**/*.html</include>
                    <include>**/*.css</include>
                    <include>**/*.js</include>
                </includes>
                <replacements>
                    <replacement>
                        <token>com.original.engine</token>
                        <value>com.yourgame.engine</value>
                    </replacement>
                    <replacement>
                        <token>com.original.engine.api</token>
                        <value>com.yourgame.api</value>
                    </replacement>
                </replacements>
            </configuration>
        </execution>
    </executions>
</plugin>

内容的提问来源于stack exchange,提问作者Fr33styler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 22:15:08