SpringCloud - Add a prefix for configuration files generated

Aperta
#1,059 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
java, spring
Ambito
api, backend

Direzione di ricerca

Inizia dai template del generatore spring-cloud che producono ApiKeyRequestInterceptor e ClientConfiguration, usando la configurazione Maven e i nomi delle classi generate indicati nell’issue come punto di ingresso. Traccia ogni riferimento generato a queste classi, quindi verifica che un prefisso configurabile rinomini i file e gli utilizzi, in modo che più client non creino più bean clientConfiguration in conflitto.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

When generating a Spring Boot client with

<plugin>
     <groupId>io.swagger.codegen.v3</groupId>
     <artifactId>swagger-codegen-maven-plugin</artifactId>
     <version>3.0.34</version>
     <executions>
         <execution>
             <goals>
                 <goal>generate</goal>
             </goals>
             <configuration>
                 <inputSpec>${project.basedir}/src/main/resources/myapi.yaml</inputSpec>
                 <output>${project.build.directory}/generated-sources/client</output>
                 <language>spring</language>
                 <library>spring-cloud</library>
                 <generateModels>true</generateModels>
                 <modelPackage>${clientBasePackage}.model</modelPackage>
                 <generateApis>true</generateApis>
                 <apiPackage>${clientBasePackage}.api</apiPackage>
                 <generateModelTests>false</generateModelTests>
                 <generateModelDocumentation>false</generateModelDocumentation>
                 <generateApiTests>false</generateApiTests>
                 <generateApiDocumentation>false</generateApiDocumentation>
                 <configOptions>
                     <configPackage>${clientBasePackage}.config</configPackage>
                     <dateLibrary>java11</dateLibrary>
                     <title>${api-name}</title>
                 </configOptions>
             </configuration>
         </execution>
     </executions>
 </plugin>

the generated files in the package config are always

├───config
│       ApiKeyRequestInterceptor.class
│       ClientConfiguration.class

It is a problem when I have multiple clients injected in the same Spring Boot application. In that case the application is not starting and complains about a conflict between beans with the same name (clientConfiguration).

Is it possible to add an option like MyApi allowing to have

├───config
│       MyApiApiKeyRequestInterceptor.class
│       MyApiClientConfiguration.class

And of course renaming all the usages within other generated files.

The only solution I found is to add

<plugin>
    <groupId>com.coderplus.maven.plugins</groupId>
    <artifactId>copy-rename-maven-plugin</artifactId>
    <version>1.0.1</version>
    <executions>
        <execution>
            <id>rename-ApiKeyRequestInterceptor</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>rename</goal>
            </goals>
            <configuration>
                <sourceFile>${project.build.directory}/generated-sources/client/src/main/java/.../config/ApiKeyRequestInterceptor.java</sourceFile>
                <destinationFile>${project.build.directory}/generated-sources/client/src/main/java/.../config/MyApiApiClientApiKeyRequestInterceptor.java</destinationFile>
            </configuration>
        </execution>
        <execution>
            <id>rename-ClientConfiguration</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>rename</goal>
            </goals>
            <configuration>
                <sourceFile>${project.build.directory}/generated-sources/client/src/main/java/.../config/ClientConfiguration.java</sourceFile>
                <destinationFile>${project.build.directory}/generated-sources/client/src/main/java/.../config/MyApiApiClientConfiguration.java</destinationFile>
            </configuration>
        </execution>
    </executions>
</plugin>
<plugin>
    <groupId>com.google.code.maven-replacer-plugin</groupId>
    <artifactId>replacer</artifactId>
    <version>1.5.3</version>
    <executions>
        <execution>
            <id>replace-for-ApiKeyRequestInterceptor</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>replace</goal>
            </goals>
            <configuration>
                <basedir>${project.build.directory}/generated-sources/client/src/main/java/.../config</basedir>
                <includes>
                    <include>**/*.java</include>
                </includes>
                <replacements>
                    <replacement>
                        <token>ApiKeyRequestInterceptor</token>
                        <value>MyApiApiClientApiKeyRequestInterceptor</value>
                    </replacement>
                </replacements>
            </configuration>
        </execution>
        <execution>
            <id>replace-for-ClientConfiguration</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>replace</goal>
            </goals>
            <configuration>
                <basedir>${project.build.directory}/generated-sources/client/src/main/java/...</basedir>
                <includes>
                    <include>**/*.java</include>
                </includes>
                <replacements>
                    <replacement>
                        <token>ClientConfiguration</token>
                        <value>MyApiApiClientConfiguration</value>
                    </replacement>
                </replacements>
            </configuration>
        </execution>
    </executions>
</plugin>

But it's really boring...

Lingua principale
Mustache
Stelle
299
Fork
439
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di swagger-api/swagger-codegen-generators

Tutte le issue di swagger-api/swagger-codegen-generators

Issue simili

Altre issue su Backend & API Design

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.