2016-07-21 46 views
3

Gibt es eine Möglichkeit, mehrere Pakete bei der Konfiguration von Swagger 2 anzugeben?Mehrere Ressourcenpakete mit Swagger 2

BeanConfig beanConfig = new BeanConfig(); 
    beanConfig.setVersion("1.0.0"); 
    beanConfig.setResourcePackage("com.company1.resources ; org.company2.resources"); 
    beanConfig.setScan(true); 

BeanConfig.setResourcePackage nimmt nur einen String. Wenn ich sie durch ein Leerzeichen getrennt habe, wird nur das erste berücksichtigt. Wenn ich es mit einer semicolon versuche, findet swagger keine.

Ich habe einen Frühling Boot-Anwendung mit Jersey 2.

Antwort

4

Ich habe dies nicht überall gesehen dokumentiert, aber in der aktuellen Swagger Kern (1.5.10) ist es basierend auf dem Code sieht aus wie Sie mehrere Pakete durch eine separate Komma (','). Hier ist der relevante Ausschnitt aus BeanConfig.java:

if (resourcePackage != null && !"".equals(resourcePackage)) { 
     String[] parts = resourcePackage.split(","); 
     for (String pkg : parts) { 
      if (!"".equals(pkg)) { 
       acceptablePackages.add(pkg); 
       config.addUrls(ClasspathHelper.forPackage(pkg)); 
      } 
     } 
    } else { 
     allowAllPackages = true; 
    } 

Weiter unten finden Sie die erscheint allowAllPackages Flag bewirkt, dass Swagger Dokumentation auf allen Klassen in der Anwendung des Classpath zu erzeugen, die JAX-RS Anmerkungen haben. Je nachdem, welche Abhängigkeiten Sie haben, kann es einfach sein, einfach kein Ressourcenpaket zu setzen. Wahrscheinlich ist es sicherer, die kommagetrennte Liste zu verwenden.

Edit:

Ich habe erwähnt dies in dem documentation finden:

setResourcePackage (String)

resourcePackage

Sets, das Paket (e) Swagger scannen zu holen Ressourcen auf. Wenn es mehr als ein Paket gibt, kann es sich um eine Liste von durch Komma getrennten Paketen handeln.