2017-10-16 9 views
0

Je travaille sur un projet maven spring-boot (Maven 3.5, Java 8). En raison de l'utilisation Swagger Codegen dans mon projet pour générer des classes, l'étiquette de la pom.xml devient de plus « plugins »:Comment minimiser maven pom.xml

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
     <plugin> 
      <groupId>io.swagger</groupId> 
      <artifactId>swagger-codegen-maven-plugin</artifactId> 
      <version>2.2.3</version> 
      <executions> 
       <execution> 
        <id>file1</id> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
        <configuration> 
         <inputSpec>src/main/resources/swagger/../file1.json</inputSpec> 
         <generateApis>false</generateApis> 
         <generateSupportingFiles>false</generateSupportingFiles> 
         <generateApiDocumentation>false</generateApiDocumentation> 
         <modelPackage>com.bla.bla.model</modelPackage> 
         <templateDirectory>src/main/resources/swagger/templates</templateDirectory> 
         <language>spring</language> 
         <modelNamePrefix>ABC</modelNamePrefix> 
         <configOptions> 
          <interfaceOnly>true</interfaceOnly> 
          <java8>true</java8> 
         </configOptions> 
        </configuration> 
       </execution> 
       <execution> 
        <id>file2</id> 
        <goals> 
         <goal>generate</goal> 
        </goals> 
        <configuration> 
         <inputSpec>src/main/resources/swagger/.../file2.json</inputSpec> 
         <generateApis>false</generateApis> 
         <generateSupportingFiles>false</generateSupportingFiles> 
         <generateApiDocumentation>false</generateApiDocumentation> 
         <modelPackage>com.bla.bla.model</modelPackage> 
         <templateDirectory>src/main/resources/swagger/templates</templateDirectory> 
         <language>spring</language> 
         <modelNamePrefix>ABC</modelNamePrefix> 
         <configOptions> 
          <interfaceOnly>true</interfaceOnly> 
          <java8>true</java8> 
         </configOptions> 
        </configuration> 
       </execution> 
... 

Si je déplace des plug-ins dans un autre fichier xml, est-il possible d'inclure ce fichier xml dans pom.xml? Si ce n'est pas possible, comment puis-je minimiser ce fichier?

EDIT: Cette question n'est pas une copie de Is it possible to split maven pom files?. Mon projet n'a pas encore été grand. Seul le fichier pom.xml grossit, il n'est donc pas nécessaire de séparer mes codes en modules et de les organiser de manière à avoir des fichiers pom.xml parent-enfant. J'ai besoin de quelque chose de différent.

+0

double possible de [? Est-il possible de partager des fichiers pom Maven] (https://stackoverflow.com/questions/ 2271082/is-it-it-to-split-maven-pom-files) – OldProgrammer

+0

Voir le commentaire OldProgrammer pour la manière habituelle de Maven. Vous pouvez essayer polyglot maven (https://github.com/takari/polyglot-maven) d'utiliser le fichier pom dans un autre format que XML et choisissez le dialecte que vous voulez parmi les dialectes pris en charge. Si votre projet est assez petit, vous pouvez également envisager de passer à graduer –

Répondre

0

Vous pouvez définir des propriétés de plugin communes dans l'élément <pluginManagement> une fois, puis pour chaque exécution, définir uniquement des configurations spécifiques. C'est-à-dire <inputSpec>src/main/resources/swagger/../file1.json</inputSpec>

Ou vous pouvez faire la même chose (<pluginManagment>) dans un autre projet parent et dans tous les enfants mettre seulement des configurations spécifiques.

UPD:

exemple:

... 
<build> 
    <pluginManagement> 
    <plugins> 
     <plugin> 
      <groupId>io.swagger</groupId> 
      <artifactId>swagger-codegen-maven-plugin</artifactId> 
      <version>2.2.3</version> 
      <configuration> 
       <generateApis>false</generateApis> 
       <generateSupportingFiles>false</generateSupportingFiles> 
       <generateApiDocumentation>false</generateApiDocumentation> 
       <modelPackage>com.bla.bla.model</modelPackage> 
       <templateDirectory>src/main/resources/swagger/templates 
       </templateDirectory> 
       <language>spring</language> 
       <modelNamePrefix>ABC</modelNamePrefix> 
       <configOptions> 
        <interfaceOnly>true</interfaceOnly> 
        <java8>true</java8> 
       </configOptions> 
      </configuration> 
     </plugin> 
    </plugins> 
</pluginManagement> 
<plugins> 
    <plugin> 
     <groupId>io.swagger</groupId> 
     <artifactId>swagger-codegen-maven-plugin</artifactId> 
     <executions> 
      <execution> 
       <id>file1</id> 
       <goals> 
        <goal>generate</goal> 
       </goals> 
       <configuration> 
        <inputSpec>src/main/resources/swagger/../file1.json</inputSpec> 
       </configuration> 
      </execution> 
      <execution> 
       <id>file2</id> 
       <goals> 
        <goal>generate</goal> 
       </goals> 
       <configuration> 
        <inputSpec>src/main/resources/swagger/.../file2.json</inputSpec> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build>    

...

+0

Mon projet n'a pas encore été grand. Seul le fichier pom.xml grossit, il n'est donc pas nécessaire de séparer mes codes en modules et de les organiser de manière à avoir des fichiers pom.xml parent-enfant. Je pense que je dois utiliser des modules et la hiérarchie pom.xml parent-enfant pour mettre en œuvre vos recommandations, non? –

+0

Pas nécessaire. Vous pouvez définir les propriétés communes dans '' une fois dans le même fichier pom.xml, puis dans votre véritable '' 'ou' 'définir uniquement des propriétés spécifiques. – Vadim

+0

quelque chose comme dans l'exemple ajouté pour la configuration "même pom". – Vadim