OpenAPI、SpringBoot 3.x 并非所有内容都使用 Jakarta 而不是 Javax

问题描述 投票:0回答:2

我正在尝试将项目中的依赖项提升到 SpringBoot 3.x。由于 Spring 正在从 javax 切换到 jakarta,我试图让这一切也发生在项目中。 我正在使用 OpenAPI 生成一些文件,对于大多数文件,一切都按预期工作,问题出在 ApiUtils 上 - 它仍在尝试使用 javax.servlet.http.HttpServletResponse。

我检查了 Mustache 文件,那里没有 javax 依赖项。 有什么想法如何处理吗?我将不胜感激任何帮助。

我的 pom 的部分内容与该问题相关:

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.0.1</version>
        <relativePath/>
    </parent>

    <properties>
        <jakarta.servlet-api.version>6.0.0</jakarta.servlet-api.version>
        <java.version>17</java.version>
        <springdoc-openapi-starter-webmvc-ui.version>2.0.2</springdoc-openapi-starter-webmvc-ui.version>
    </properties>

 <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.openapitools</groupId>
                <artifactId>jackson-databind-nullable</artifactId>
                <version>${jackson-databind-nullable.version}</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok-mapstruct-binding</artifactId>
                <version>${lombok-mapstruct-binding.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct</artifactId>
                <version>${mapstruct.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mapstruct.extensions.spring</groupId>
                <artifactId>mapstruct-spring-annotations</artifactId>
                <version>${mapstruct-spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mapstruct.extensions.spring</groupId>
                <artifactId>mapstruct-spring-extensions</artifactId>
                <version>${mapstruct-spring.version}</version>
            </dependency>
             <dependency>
                <groupId>jakarta.servlet</groupId>
                <artifactId>jakarta.servlet-api</artifactId>
                <version>${jakarta.servlet-api.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springdoc</groupId>
                <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
                <version>${springdoc-openapi-starter-webmvc-ui.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-activemq</artifactId>
                <version>${spring-boot-starter-activemq.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <!--Spring dependencies-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-ldap</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-json</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-jms</artifactId>
        </dependency>
         <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
        </dependency>
        <dependency>
            <groupId>jakarta.servlet</groupId>
            <artifactId>jakarta.servlet-api</artifactId>
        </dependency>
    </dependencies>
spring-boot openapi openapi-generator jakarta-migration
2个回答
4
投票

这是一个已知问题,实际上昨天刚刚通过此合并修复了。 现在,您可以使用新的

useJakartaEe
配置选项强制 Jakarta 导入。

Maven 示例

<configOptions>
  <useJakartaEe>true</useJakartaEe>
</configOptions>

Gradle 示例

configOptions = [
  useJakartaEe: "true"
]

CLI 示例

openapi-generator -g spring -o out -i spec.yaml --additional-properties=useJakartaEe=true

0
投票

如果您使用

kotlin-spring
生成器,修复方法是添加此配置选项:

    "useSpringBoot3": "true"

根据文档:

生成代码并提供与 Spring Boot 3.x 一起使用的依赖项。 (在导入中使用 jakarta 而不是 javax)。启用此选项还将启用 useJakartaEe。

https://github.com/OpenAPITools/openapi-generator/blob/master/docs/generators/kotlin-spring.md

© www.soinside.com 2019 - 2024. All rights reserved.