背景

发布到中央仓库时需要javadoc注释,所以写了这个maven插件用于在构建阶段自动生成注释。该插件同时支持Java 8和Java 17版本。

特性

  1. 同时支持Java 8和Java 17及以上
  2. 模块化设计:将代码按职责拆分为多个类,提高代码的可维护性和可扩展性
  3. 配置灵活性:增加了多个配置选项,允许用户自定义Javadoc生成行为
  4. 错误处理:改进了异常处理机制,提高代码的健壮性
  5. 代码复用:提取重复代码为通用方法,减少代码冗余

使用方法

单独使用

      <build>
    <plugins>
        <plugin>
            <groupId>io.github.liyao52033</groupId>
            <artifactId>autofill-javadoc-maven-plugin</artifactId>
            <version>1.2.0</version>
            <executions>
                <execution>
                    <goals>
                        <goal>autofill</goal>
                    </goals>
                    <phase>generate-sources</phase> 
                </execution>
            </executions>
            <configuration>
                <sourceDir>src/main/java</sourceDir> <!-- 指定源代码目录 -->
                <addClassJavadoc>true</addClassJavadoc> <!-- 是否添加类注释 -->
                <addMethodJavadoc>true</addMethodJavadoc> <!-- 是否添加方法注释 -->
                <addParamJavadoc>true</addParamJavadoc> <!-- 是否添加参数注释 -->
                <addReturnJavadoc>true</addReturnJavadoc> <!-- 是否添加返回值注释 -->
                <addThrowsJavadoc>true</addThrowsJavadoc> <!-- 是否添加异常注释 -->
                <!-- 高级配置选项 -->
                <excludePatterns>
                    <excludePattern>.*\/generated\/.*</excludePattern> <!-- 排除生成的代码 -->
                    <excludePattern>.*Test\.java</excludePattern> <!-- 排除测试文件 -->
                </excludePatterns>
                <includePrivateMethods>false</includePrivateMethods> <!-- 是否包含私有方法 -->
            </configuration>
        </plugin>
    </plugins>
</build>
    

与maven-javadoc-plugin集成发布到中央仓库

      <build>
  <plugins>
    <plugin>
      <groupId>org.sonatype.central</groupId>
      <artifactId>central-publishing-maven-plugin</artifactId>
      <version>0.5.0</version>
      <extensions>true</extensions>
      <configuration>
        <publishingServerId>xxx</publishingServerId>
        <checksums>required</checksums>
        <deploymentName>xxx</deploymentName>
      </configuration>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-source-plugin</artifactId>
      <version>3.2.1</version>
      <executions>
        <execution>
          <id>attach-sources</id>
          <phase>verify</phase>
          <goals>
            <goal>jar-no-fork</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
    <plugin>
      <groupId>io.github.liyao52033</groupId>
      <artifactId>autofill-javadoc-maven-plugin</artifactId>
      <version>1.2.0</version>
      <executions>
        <execution>
          <goals>
            <goal>autofill</goal>
          </goals>
          <phase>generate-sources</phase> <!-- 确保在javadoc之前运行 -->
        </execution>
      </executions>
      <configuration>
        <sourceDir>src/main/java</sourceDir> <!-- 指定源代码目录 -->
      </configuration>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>3.5.0</version>
      <configuration>
        <encoding>UTF-8</encoding>
        <charset>UTF-8</charset>
        <docencoding>UTF-8</docencoding>
      </configuration>
      <executions>
        <execution>
          <id>attach-javadocs</id>
          <goals>
            <goal>jar</goal>
          </goals>
          <phase>verify</phase> <!-- Javadoc 生成在 verify 阶段运行 -->
        </execution>
      </executions>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-gpg-plugin</artifactId>
      <version>3.2.7</version>
      <executions>
        <execution>
          <id>sign-artifacts</id>
          <phase>verify</phase>
          <goals>
            <goal>sign</goal>
          </goals>
        </execution>
      </executions>
      <configuration>
        <gpgArguments>
          <arg>--pinentry-mode</arg>
          <arg>loopback</arg>
        </gpgArguments>
      </configuration>
    </plugin>
  </plugins>
</build>
    

项目结构

项目结构如下:

加载中...

声明

作者: liyao

版权:本博客所有文章除特别声明外,均采用CCBY-NC-SA4.O许可协议。转载请注明!

最后更新于 2025-10-02 15:34 history