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

如何在Maven打包时保留类的Javadoc?maven-shade-plugin配置问题

Maven打包保留类Javadoc注释的解决方案

你当前的maven-shade-plugin配置存在致命问题:配置中排除了所有**/*.class文件,这会导致shade插件完全不处理类文件,自然无法保留注释。

要实现打包时保留类的Javadoc注释,需从编译阶段和shade打包阶段两部分调整配置:

1. 配置maven-compiler-plugin保留注释

Java编译器默认会丢弃Javadoc注释,必须通过编译参数让编译器将注释元数据嵌入class文件:

<build>
  <plugins>
    <!-- 编译阶段保留注释元数据 -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.11.0</version>
      <configuration>
        <source>1.8</source> <!-- 替换为你的实际JDK版本 -->
        <target>1.8</target>
        <compilerArgs>
          <arg>-Xdoclint:none</arg> <!-- 可选:关闭文档格式检查,避免因注释不规范导致编译失败 -->
          <arg>-keepattributes</arg>
          <arg>SourceFile,LineNumberTable,Deprecated,Synthetic,Signature,RuntimeVisibleAnnotations,RuntimeInvisibleAnnotations,RuntimeVisibleParameterAnnotations,RuntimeInvisibleParameterAnnotations,AnnotationDefault,EnclosingMethod</arg>
          <arg>-keepclassmembers</arg>
          <arg>public class * {
            public protected *;
          }</arg>
        </compilerArgs>
      </configuration>
    </plugin>
  </plugins>
</build>

-keepattributes指定需要保留的class属性集合,其中包含了注释相关的元数据;-keepclassmembers确保类成员的注释也能被保留。

2. 修正maven-shade-plugin配置

移除之前错误的excludes规则,shade插件默认不会清除class文件中的注释,只需正常配置打包逻辑即可:

<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>
        <!-- 可在此添加自定义打包规则,比如指定主类、过滤依赖等 -->
        <!-- 无需排除class文件 -->
      </configuration>
    </execution>
  </executions>
</plugin>

验证配置是否生效

打包完成后,使用javap命令查看class文件的元数据:

javap -v target/[你的shaded包名称].jar!/[你的类全路径].class

如果输出中包含SourceFile、LineNumberTable等属性,说明注释元数据已成功保留。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:19:53