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
2.2.1 - berfungsi di 2.1.6
https://github.com/amadeus-travel-innovation-sandbox/sandbox-content/blob/master/swagger.yml
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>
Klon dan bangun https://github.com/tadhgpearson/swagger-maven-plugin-dependencies
Saya menggunakan Java 8 & Maven 3.3
Mungkin # 3261?
Perilaku menyarankan default sekarang menggunakan GSON + OK HTTP - mungkin di situlah letak bugnya?
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