我的任务是升级我们中心的一个休息服务,使它使用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依赖项,但我找不到罪魁祸首。
换句话说,一切正常,但我不希望这个小东西在以后的生产中引起任何问题。我检查了其他已经迁移的服务,我不认为这些服务中有任何一个发生了这种情况。
谢谢你的任何建议。
1条答案
按热度按时间wbgh16ku1#
所以,我发现这根本不是一个基于代码的问题。仍然不确定为什么会发生这种情况,但我重新安装了IDE并安装了新版本的IntellijIDEA。现在一切都正常了。我的意思是,生成的注解不再使用javax依赖项,错误也不再显示。
感谢你们的帮助。