Swagger-codegen: [Java] لا يمكن إنشاء كود تم إنشاؤه بواسطة البرنامج المساعد Maven

تم إنشاؤها على ٣٠ نوفمبر ٢٠١٦  ·  7تعليقات  ·  مصدر: swagger-api/swagger-codegen

وصف

أنا أستخدم البرنامج المساعد Maven لإنشاء كود Java. بعد الجيل ، أحصل على أخطاء في تجميع الكود الذي تم إنشاؤه مثل:

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

أنا مندهش لأنني أتوقع عميل جيرسي 1.18. معالجة JSON: يجب استخدام Jackson 2.4.2_ ، كما هو موثق في الملف التمهيدي - لماذا أحتاج إلى GSON أو OKIO. إذا قمت بذلك ، لا يمكنني العثور على التبعيات التي سأحتاج إلى إضافتها لحل هذه المشكلة - أنا أستخدم الأمثلة الموجودة في وثائق swagger-maven-plugin ، لكن الإصدار لا يزال يفشل

نسخة Swagger-codegen

2.2.1 - كان يعمل في 2.1.6

محتوى ملف إعلان Swagger أو عنوان url

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

سطر الأوامر المستخدم للتوليد

تكوين 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>

التبعيات والخصائص

<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>
خطوات التكاثر

استنساخ وبناء https://github.com/tadhgpearson/swagger-maven-plugin-dependencies
أنا أستخدم Java 8 & Maven 3.3

القضايا ذات الصلة

ربما # 3261؟

اقترح إصلاحًا

يشير السلوك إلى أن الإعداد الافتراضي يستخدم الآن GSON + OK HTTP - ربما هذا هو المكان الذي يوجد فيه الخطأ؟

Question Swagger Codegen Maven Plugin

ال 7 كومينتر

Aha - الدليل موجود في JavaClientCodegen:56 والذي تم تحديثه في # 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");

إذا كنت تريد الاحتفاظ بهذا كإعداد افتراضي (أفضل جاكسون / جيرسي ، ولكن هذا مجرد رأيي الصغير) ، فعندئذٍ يجب تحديث أمثلة كود المخضرم ، ويجب أن تخبرني الوثائق كيف يمكنني الآن استدعاء ما اعتاد أن يكون الخيار الافتراضي (هل هذا jersey1 ؟)

حسنًا - تمكنت من حل هذا من خلال البحث في الكود وقدمت طلب السحب أعلاه لتحديث الوثائق. امل ان يساعد!

لقد قمت مؤخرًا بالتحديث من 2.1.6 إلى 2.2.1 حيث كنت بحاجة إلى ميزة "templateDirectory" الجديدة التي تعمل في 2.2.1. ولكن بمجرد أن فعلت ذلك أحصل على نفس الأخطاء المعقدة. كيف حللت هذا مساعدة!

هل هناك طريقة للاستمرار في استخدام جرسي وتجاهل مكتبة GSON الافتراضية الجديدة؟

aparnarus : استخدم مفتاح التبديل jersey1 ، كما هو موثق في الملف التمهيدي.

شكرا لك! لست متأكدًا من كيف فاتني ذلك - لكن نعم ، لقد نجح ذلك.

aparnarus : استخدم مفتاح التبديل jersey1 ، كما هو موثق في الملف التمهيدي.

<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>

تم حلها بالنسبة لي

تشكرات

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات