Swagger-codegen: [Java] Tidak dapat membuat kode yang dihasilkan oleh plugin Maven

Dibuat pada 30 Nov 2016  ·  7Komentar  ·  Sumber: swagger-api/swagger-codegen

Deskripsi

Saya menggunakan plugin Maven untuk menghasilkan kode Java. Setelah pembuatan, saya mendapatkan kesalahan dalam menyusun kode yang dihasilkan seperti:

package com.google.gson.annotations does not exist
package okio does not exist

Saya terkejut karena saya mengharapkan klien _Jersey 1,18. Pemrosesan JSON: Jackson 2.4.2_ untuk digunakan, seperti yang didokumentasikan di readme - mengapa saya memerlukan GSON atau OKIO. Jika saya melakukannya, saya tidak dapat menemukan dependensi mana yang perlu saya tambahkan untuk menyelesaikan masalah ini - Saya menggunakan contoh di dokumentasi swagger-maven-plugin, tetapi build masih gagal

Versi swagger-codegen

2.2.1 - berfungsi di 2.1.6

Konten atau url file deklarasi kesombongan

https://github.com/amadeus-travel-innovation-sandbox/sandbox-content/blob/master/swagger.yml

Baris perintah digunakan untuk pembangkitan

Konfigurasi codegen

                        <configuration>
                            <inputSpec>https://raw.githubusercontent.com/amadeus-travel-innovation-sandbox/sandbox-content/master/swagger.yml</inputSpec>
                            <language>java</language>
                            <configOptions>
                               <dateLibrary>joda</dateLibrary>
                            </configOptions>
                            <output>${project.build.directory}/generated-sources/swagger</output>
                        </configuration>

Dependensi dan properti

<dependencies>
        <!-- dependencies are needed for the client being generated -->
        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>${swagger-annotations-version}</version>
        </dependency>

        <!-- HTTP client: jersey-client -->
        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-client</artifactId>
            <version>${jersey-version}</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-multipart</artifactId>
            <version>${jersey-version}</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.jersey.media</groupId>
            <artifactId>jersey-media-json-jackson</artifactId>
            <version>2.22.1</version>
        </dependency>

        <!-- JSON processing: jackson -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>${jackson-version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>${jackson-version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson-version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.datatype</groupId>
            <artifactId>jackson-datatype-joda</artifactId>
            <version>2.1.5</version>
        </dependency>
        <dependency>
            <groupId>joda-time</groupId>
            <artifactId>joda-time</artifactId>
            <version>${jodatime-version}</version>
        </dependency>

        <!-- Base64 encoding that works in both JVM and Android -->
        <dependency>
            <groupId>com.brsanthu</groupId>
            <artifactId>migbase64</artifactId>
            <version>2.2</version>
        </dependency>
        <!-- test dependencies -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit-version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <swagger-annotations-version>1.5.0</swagger-annotations-version>
        <jersey-version>2.12</jersey-version>
        <jackson-version>2.4.2</jackson-version>
        <jodatime-version>2.3</jodatime-version>
        <maven-plugin-version>1.0.0</maven-plugin-version>
        <junit-version>4.8.1</junit-version>
    </properties>
Langkah-langkah untuk mereproduksi

Klon dan bangun https://github.com/tadhgpearson/swagger-maven-plugin-dependencies
Saya menggunakan Java 8 & Maven 3.3

Masalah terkait

Mungkin # 3261?

Sarankan Perbaikan

Perilaku menyarankan default sekarang menggunakan GSON + OK HTTP - mungkin di situlah letak bugnya?

Question Swagger Codegen Maven Plugin

Semua 7 komentar

Aha - petunjuknya ada di JavaClientCodegen:56 yang diperbarui di # 3919

CliOption libraryOption = new CliOption(CodegenConstants.LIBRARY, "library template (sub-template) to use"); libraryOption.setEnum(supportedLibraries); // set okhttp-gson as the default libraryOption.setDefault("okhttp-gson"); cliOptions.add(libraryOption); setLibrary("okhttp-gson");

Jika Anda ingin mempertahankan ini sebagai default (saya lebih suka Jackson / Jersey, tapi itu hanya pendapat kecil saya), maka contoh codegen maven perlu diperbarui, dan dokumentasinya harus memberi tahu saya bagaimana saya sekarang dapat memanggil apa yang dulu menjadi opsi default (apakah itu jersey1 ?)

OK - Saya berhasil menyelesaikan ini dengan melihat-lihat kode dan memberikan permintaan tarik di atas untuk memperbarui dokumentasi. Semoga membantu!

Saya baru saja memperbarui dari 2.1.6 ke 2.2.1 karena saya memerlukan fitur "templateDirectory" baru yang berfungsi di 2.2.1. tetapi segera setelah saya melakukannya, saya mendapatkan kesalahan yang sama. bagaimana Anda mengatasi ini? Tolong!

apakah ada cara untuk tetap menggunakan jersy dan mengabaikan pustaka GSON default baru?

@aparnarus : gunakan tombol jersey1 , seperti yang didokumentasikan di readme.

Terima kasih! im tidak yakin bagaimana saya melewatkannya - tapi ya itu berhasil.

@aparnarus : gunakan tombol jersey1 , seperti yang didokumentasikan di readme.

<build> <plugins> <plugin> <groupId>io.swagger</groupId> <artifactId>swagger-codegen-maven-plugin</artifactId> <version>2.3.1</version> <executions> <execution> <goals> <goal>generate</goal> </goals> <configuration> <inputSpec>/src/main/resources/swagger.json</inputSpec> <language>java</language> <output></output> <apiPackage>it.eng.sil.scoop</apiPackage> <modelPackage>it.eng.sil.ws.scoop.client.model</modelPackage> <generateModels>true</generateModels> <generateApis>false</generateApis> <generateApiTests>false</generateApiTests> <generateApiDocumentation>false</generateApiDocumentation> <generateSupportingFiles>false</generateSupportingFiles> <generateModelDocumentation>false</generateModelDocumentation> **<library>jersey1</library>** <configOptions> <dateLibrary>java8</dateLibrary> <sourceFolder>src/main/java</sourceFolder> </configOptions> </configuration> </execution> </executions> </plugin> </plugins> </build>

itu terpecahkan untuk saya

terimakasih banyak

Apakah halaman ini membantu?
0 / 5 - 0 peringkat