Open Api Generator 插件不适用于 Maven

Jfr*_*nky 6 java spring maven openapi-generator

我正在尝试使用 openapi 生成器生成 API,当我运行 mvncompile 时,似乎没有找到任何像 jacks httprequest 这样的依赖关系,因此,我添加了详细信息,然后添加了插件:

<plugin>
                <groupId>org.openapitools</groupId>
                <artifactId>openapi-generator-maven-plugin</artifactId>
                <!-- RELEASE_VERSION -->
                <version>4.3.1</version>
                <!-- /RELEASE_VERSION -->
                <executions>
                    <execution>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <inputSpec>${project.basedir}/src/main/resources/player.yml</inputSpec>
                            <generatorName>java</generatorName>
                            <configOptions>
                                <sourceFolder>src/gen/java/main</sourceFolder>
                            </configOptions>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
Run Code Online (Sandbox Code Playgroud)

使用此文件player.yml:

openapi: 3.0.1
info:
  title: Swagger Petstore
  description: 'This is a sample server Petstore server.  You can find out more about     Swagger
    at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/).      For
    this sample, you can use the api key `special-key` to test the authorization     filters.'
  termsOfService: http://swagger.io/terms/
  contact:
    email: apiteam@swagger.io
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  version: 1.0.0
externalDocs:
  description: Find out more about Swagger
  url: http://swagger.io
servers:
  - url: https://petstore.swagger.io/v2
  - url: http://petstore.swagger.io/v2
tags:
  - name: pet
    description: Everything about your Pets
    externalDocs:
      description: Find out more
      url: http://swagger.io
  - name: store
    description: Access to Petstore orders
  - name: user
    description: Operations about user
    externalDocs:
      description: Find out more about our store
      url: http://swagger.io
paths:
  /cssl/player/{uuid}:
    get:
      tags:
        - store
      summary: Find purchase order by ID
      description: For valid response try integer IDs with value >= 1 and <= 10.         Other
        values will generated exceptions
      operationId: getOrderById
      parameters:
        - name: uuid
          in: path
          description: ID of pet that needs to be fetched
          required: true
          schema:
            maximum: 10.0
            minimum: 1.0
            type: integer
            format: int64
      responses:
        200:
          description: successful operation
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/Player'
            application/json:
              schema:
                $ref: '#/components/schemas/Player'
        400:
          description: Invalid ID supplied
          content: {}
        404:
          description: Order not found
          content: {}
    delete:
      tags:
        - store
      summary: Delete purchase order by ID
      description: For valid response try integer IDs with positive integer value.         Negative
        or non-integer values will generate API errors
      operationId: deleteOrder
      parameters:
        - name: uuid
          in: path
          description: ID of the order that needs to be deleted
          required: true
          schema:
            minimum: 1.0
            type: integer
            format: int64
      responses:
        400:
          description: Invalid ID supplied
          content: {}
        404:
          description: Order not found
          content: {}
components:
  schemas:
    Player:
      type: object
      properties:
        uuid:
          type: integer
          format: int64
        slName:
          type: integer
          format: int64
        slLastname:
          type: integer
          format: int32
Run Code Online (Sandbox Code Playgroud)

就在我尝试编译时,它没有发现依赖项给出如下错误:

   [DEBUG] incrementalBuildHelper#beforeRebuildExecution
[INFO] Compiling 33 source files to /home/francescolombardi/IdeaProjects/core-comunicator/target/classes
[DEBUG] incrementalBuildHelper#afterRebuildExecution
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /home/francescolombardi/IdeaProjects/core-comunicator/target/generated-sources/openapi/src/gen/java/main/org/openapitools/client/ApiClient.java:[17,29] package okhttp3.internal.http does not exist
[ERROR] /home/francescolombardi/IdeaProjects/core-comunicator/target/generated-sources/openapi/src/gen/java/main/org/openapitools/client/ApiClient.java:[18,28] package okhttp3.internal.tls does not exist
[ERROR] /home/francescolombardi/IdeaProjects/core-comunicator/target/generated-sources/openapi/src/gen/java/main/org/openapitools/client/ApiClient.java:[19,23] package okhttp3.logging does not exist
[ERROR] /home/francescolombardi/IdeaProjects/core-comunicator/target/generated-sources/openapi/src/gen/java/main/org/openapitools/client/ApiClient.java:[20,46] package okhttp3.logging.HttpLoggingInterceptor does not exist
[ERROR] /home/francescolombardi/IdeaProjects/core-comunicator/target/generated-sources/openapi/src/gen/java/main/org/openapitools/client/ApiClient.java:[21,12] package okio does not exist
[ERROR] /home/francescolombardi/IdeaProjects/core-comunicator/target/generated-sources/openapi/src/gen/java/main/org/openapitools/client/ApiClient.java:[22,12] package okio does not exist
[ERROR] /home/francescolombardi/IdeaProjects/core-comunicator/target/generated-sources/openapi/src/gen/java/main/org/openapitools/client/ApiClient.java:[74,13] cannot find symbol
  symbol:   class OkHttpClient
  location: class org.openapitools.client.ApiClient
Run Code Online (Sandbox Code Playgroud)

我的 pom 是:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.0-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.cssl</groupId>
    <artifactId>core-comunicator</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>core-comunicator</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>14</java.version>
        <openapi-generator-version>4.3.1</openapi-generator-version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->


        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.4.18.Final</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>42.2.14</version>

        </dependency>

        <dependency>
            <groupId>org.openapitools</groupId>
            <artifactId>openapi-generator-maven-plugin</artifactId>
            <version>4.3.1</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.12</version>
            <scope>provided</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.openapitools/openapi-generator -->
        <dependency>
            <groupId>org.openapitools</groupId>
            <artifactId>openapi-generator</artifactId>
            <version>4.3.1</version>
        </dependency>



    </dependencies>

    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </repository>
        <repository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
    <build>

        <plugins>
            <plugin>
                <groupId>org.openapitools</groupId>
                <artifactId>openapi-generator-maven-plugin</artifactId>
                <!-- RELEASE_VERSION -->
                <version>4.3.1</version>
                <!-- /RELEASE_VERSION -->
                <executions>
                    <execution>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <inputSpec>${project.basedir}/src/main/resources/player.yml</inputSpec>
                            <generatorName>java</generatorName>
                            <configOptions>
                                <sourceFolder>src/gen/java/main</sourceFolder>
                            </configOptions>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <pluginRepositories>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-snapshots</id>
            <name>Spring Snapshots</name>
            <url>https://repo.spring.io/snapshot</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

</project>
Run Code Online (Sandbox Code Playgroud)

Jfr*_*nky 0

我发现了问题,我无法继承开放API插件的有效pom.xml的依赖关系,我必须手动添加依赖关系,有人对此解决方法有更好的建议

  • 如[此处](https://github.com/OpenAPITools/openapi-generator/issues/8298)所述:*如果您使用插件,那么您必须自己关心所有依赖项。另一方面,插件已为您生成了所有需要的依赖项。这是我为您的示例运行 mvn clean install 时得到的结果。生成的 pom.xml 具有所有必要的依赖项*。生成的 pom 文件位于“target/ generated-sources/openapi”下(取决于您的配置)。就我而言,我必须自己提供一个额外的依赖项,然后一切都可以很好地编译。 (2认同)