文章目录

  • 工程结构
  • 问题
  • 问题修复

SpringBoot - 子模块下spring-boot-configuration-processor不生效问题_自动提示


工程结构

工程结构如下

SpringBoot - 子模块下spring-boot-configuration-processor不生效问题_spring_02


问题

在子模块 SpringBoot - 子模块下spring-boot-configuration-processor不生效问题_spring_03

这个自定义的starter中,引入了绑定提示的spring-boot-configuration-processor

<!--‐导入配置文件处理器,配置文件进行绑定会有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

IDEA提示

SpringBoot - 子模块下spring-boot-configuration-processor不生效问题_spring_04

且构建的包中并没有如下这个文件

SpringBoot - 子模块下spring-boot-configuration-processor不生效问题_自动提示_05

导致我们在使用自定义的配置的时候,没有 提示,非常的难受 。


问题修复

父pom定义

<dependency>
<!-- 用于生成自定义的 Spring @ConfigurationProperties 配置类的说明文件 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>${spring.boot.version}</version>
</dependency>

之模块直接使用,无需引入版本

<!--‐导入配置文件处理器,配置文件进行绑定会有提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>

然后父pom中 maven-compiler-plugin内的annotationProcessorPaths中添加相应path

<path>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>${spring.boot.version}</version>
</path>

完整的如下:

<build>
<pluginManagement>
<plugins>
<!-- maven-surefire-plugin 插件,用于运行单元测试。 -->
<!-- 注意,需要使用 3.0.X+,因为要支持 Junit 5 版本 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version>
</plugin>
<!-- maven-compiler-plugin 插件,解决 Lombok + MapStruct 组合 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</path>
<path>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<version>${spring.boot.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>

<!--提供source-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>

</plugins>
</pluginManagement>
</build>

然后,刷新工程 可以看到

SpringBoot - 子模块下spring-boot-configuration-processor不生效问题_spring_06

我们搞个package ,看下导出来的jar

SpringBoot - 子模块下spring-boot-configuration-processor不生效问题_自动提示_05

非常好。

然后发布到nexus ,我们新起个测试项目引用下试试

SpringBoot - 子模块下spring-boot-configuration-processor不生效问题_自动提示_08

问题得到解决

SpringBoot - 子模块下spring-boot-configuration-processor不生效问题_maven_09