Я пытаюсь сгенерировать клиент из yaml, который содержит
acceptParam:
name: Accept
type: string
required: true
in: header
description: Accepted Content-type. Should be set to application/json
contentTypeParam:
name: Content-Type
type: string
required: true
in: header
description: Request Content-type. Should be set to application/json
Это означает, что accept
и contentType
будут присутствовать в сгенерированной сигнатуре метода.
Поверх что, я настроил плагин следующим образом
<plugin>
<groupId>io.swagger.codegen.v3</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>3.0.18</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/swagger.yaml</inputSpec>
<language>java</language>
<configOptions>
<dateLibrary>joda</dateLibrary>
<localVarPrefix>localVar</localVarPrefix>
</configOptions>
<library>resttemplate</library>
<output>${project.build.directory}/generated-sources</output>
<modelPackage>com.example.client.model</modelPackage>
<apiPackage>com.example.client.api</apiPackage>
<generateApiTests>false</generateApiTests>
<generateModelTests>false</generateModelTests>
</configuration>
</execution>
</executions>
</plugin>
Тем не менее, после mvn clean install
Я получаю
Ошибка: (130,31) java: переменная accept уже определена в методе
И сгенерированный код содержит
public Response authorize(Request body, String accept, ...) {
....
final List<MediaType> accept = apiClient.selectHeaderAccept(accepts);
....
}
Я пробовал разные версии плагина (от 2.3.0 до самой новой) ), после преодоления множества других проблем, я всегда так заканчиваю.