Плагин Gradle War - включает ресурсы из другого проекта - PullRequest
0 голосов
/ 03 августа 2020

Я начинаю углубляться в Gradle, перенося один имеющийся у меня проект с Maven 3.6.3 на Gradle 6.5.1.

Я подхожу к стадии, когда мне нужно создать файл War в модуль impl, который немного настроен: я переименовываю Jars в папке lib и включаю через оверлей (из Jar, встроенного в модуль api из того же проекта) некоторые ресурсы. Текущая конфигурация Maven следующая:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-war-plugin</artifactId>
  <configuration>
    <outputFileNameMapping>@{groupId}@-@{artifactId}@-@{version}@.@{extension}@</outputFileNameMapping>
    <webResources>
      <resource>
        <directory>src/main/webapp</directory>
      </resource>
    </webResources>
    <overlays>
      <!-- Include the OpenAPI spec -->
      <overlay>
        <groupId>com.project.rest</groupId>
        <artifactId>api</artifactId>
        <type>jar</type>
        <includes>
          <include>specs/</include>
        </includes>
      </overlay>
    </overlays>
  </configuration>
</plugin>

Итак, я пытаюсь придумать что-то подобное для Gradle в отношении включения ресурсов. Учитывая способ работы Gradle, у меня возникло ощущение, что лучше скопировать ресурсы из проекта api, чем выполнять трюк по извлечению файлов из Jar. Наконец я придумал что-то относительно простое:

war {
    from project(':rest-api').fileTree('src/main/resources') {
        include 'specs/**/*.yaml'
    }
}

Что работает нормально. Однако я не очень доволен жестко запрограммированным путем 'src/main/resources'. Я попытался использовать sourceSets вместо этого, но он не работает.

Итак, вопрос: правильно ли это делать? Есть ли более элегантный или Gradle-i sh способ достижения этого? У меня было ощущение, что другим способом добиться этого было бы создание configuration в проекте api, чтобы ссылаться на файлы спецификаций Yaml и использовать эту конфигурацию в проекте impl, но я понятия не имею, как это сделать это ...

Спасибо

...