2016-07-21 2 views
3

Есть ли способ указать несколько пакетов при настройке Swagger 2?Несколько пакетов ресурсов с Swagger 2

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

BeanConfig.setResourcePackage принимает только строку. Если я отделяю их пробелом, рассматривается только первый. Если я попробую с semicolon, чванство не найдет.

У меня есть приложение Spring загрузки с Джерси 2.

ответ

4

Я не видел этого задокументированы в любом месте, но на основе кода в текущем ядре Swagger (1.5.10) это выглядит, как вы отделить несколько пакетов от запятая (','). Вот соответствующий отрывок из 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; 
    } 

Дальше он появляется allowAllPackages флага заставляет Swagger генерировать документацию по всем классам в пути к классам приложения, которые имеют JAX-RS аннотации. В зависимости от того, какие у вас есть зависимости, просто невозможно установить пакет ресурсов вообще. Скорее всего, безопаснее использовать список, разделенный запятыми.

Edit:

я нашел упоминание об этом в documentation:

setResourcePackage (String)

resourcePackage

наборы, какой пакет (ы) Кураж необходимо сканировать, чтобы выбрать ресурсов. Если есть несколько пакетов, это может быть список разделенных запятыми пакетов.

Смежные вопросы