Intellij Idea 升级到spring Boot 3后mapstruct生成的文件中的Javax依赖

1aaf6o9v  于 2023-10-15  发布在  Spring
关注(0)|答案(1)|浏览(218)

我的任务是升级我们中心的一个休息服务,使它使用Spring Boot 3。除此之外,我删除了所有javax导入,并将其替换为jakaint导入。但是当我maven打包我的应用程序时,我在生成的文件中得到了一个javax导入。
具体来说,导入是在这个生成的类中(如果这个类的实现对绘制问题很重要,我会添加它):

import cz.cvut.fel.czm.api.dto.NotificationGetDTO;
import cz.cvut.fel.czm.api.dto.NotificationPostDTO;
import cz.cvut.fel.czm.model.notification.Notification;
import java.time.LocalDateTime;
import javax.annotation.processing.Generated;
import org.springframework.stereotype.Component;

@Generated(
    value = "org.mapstruct.ap.MappingProcessor",
    date = "2023-08-30T15:34:27+0200",
    comments = "version: 1.5.5.Final, compiler: javac, environment: Java 17.0.2 (Oracle Corporation)"
)
@Component
public class NotificationMapperImpl implements NotificationMapper {

...
}

这是实际的Map器:

import cz.cvut.fel.czm.api.dto.NotificationGetDTO;
import cz.cvut.fel.czm.api.dto.NotificationPostDTO;
import cz.cvut.fel.czm.model.notification.Notification;
import org.mapstruct.Mapper;

import java.time.LocalDateTime;

@Mapper(componentModel = "spring", imports = {LocalDateTime.class})
public interface NotificationMapper {
    NotificationGetDTO toDTO(Notification notification);

    Notification toModel(NotificationPostDTO notificationPostDTO);
}

我正在为服务使用自定义父级,因此我不负责更改依赖项的版本。但也有可能在父文件的某个地方有一个错误。
这是我在pom中的mapstruct依赖:

<dependency>
            <groupId>org.mapstruct</groupId>
            <artifactId>mapstruct</artifactId>
        </dependency>

这是我使用的maven插件配置:

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                            <version>${org.projectlombok.lombok.version}</version>
                        </path>
                        <path>
                            <groupId>org.mapstruct</groupId>
                            <artifactId>mapstruct-processor</artifactId>
                            <version>${org.mapstruct.mapstruct.version}</version>
                        </path>
                    </annotationProcessorPaths>
                    <compilerArgs>
                        <compilerArg>-Amapstruct.defaultComponentModel=spring</compilerArg>
                    </compilerArgs>
                </configuration>
            </plugin>

我检查了一下,我们使用的mapstruct版本是1.5.5final。
看起来当我在本地运行服务时,端点是可用的,并且正在工作,当我通过Inclusion访问它们时,但是当我在InteliJIDEA中打开它时,我遇到了“javax.management.InstanceNotFoundException:orh.springframework. Boot :type=Endpoint,name=Mappings,*”消息。
我尝试硬编码mapstruct依赖项的版本,但这似乎不是问题的原因。我还研究了哪些其他依赖项可能导致javax依赖项,但我找不到罪魁祸首。
换句话说,一切正常,但我不希望这个小东西在以后的生产中引起任何问题。我检查了其他已经迁移的服务,我不认为这些服务中有任何一个发生了这种情况。
谢谢你的任何建议。

wbgh16ku

wbgh16ku1#

所以,我发现这根本不是一个基于代码的问题。仍然不确定为什么会发生这种情况,但我重新安装了IDE并安装了新版本的IntellijIDEA。现在一切都正常了。我的意思是,生成的注解不再使用javax依赖项,错误也不再显示。
感谢你们的帮助。

相关问题