Я начинаю углубляться в 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
, но я понятия не имею, как это сделать это ...
Спасибо