03 license - xzima/gradle-semantic-release-example GitHub Wiki
Как лучше указать и работать с лицензированием repo?
Лицензирование репозитория
Для того чтобы указать лицензию в репозитории github достаточно:
- при создании репозитория указать необходимую лицензию
- добавить файл LICENSE или LICENSE.md в корень репозитория
Предпочтительная рецензия: Apache License Version 2.0
Лицензирование исходного кода
В зависимости от типа лицензии может быть достаточно выполнить Лицензирование репозитория или указать заголовок-комментарий в каждом файле с исходным кодом.
Для автоматизации указания заголовка-комментария можно использовать gradle-плагин spotless, который кроме задач лицензирования может использоваться и как linter.
Пример конфигурации можно найти в build.gradle.kts
в функции configureSpotlessKotlin
.
Лицензирование JAR
Для того чтобы собирать JAR-архив с указанием требований лицензирования нужно:
- добавить в архив файл лицензии
- добавить специфичные аттрибуты в
META-INF/MANIFEST.MF
- добавить информацию о сторонних библиотеках, если они включены в архив(приложение в формате fat jar). Представляет собой включение лицензий библиотек и генерацию общего списка используемых библиотек сгруппированного по типу лицензий в целевой архив.
Так же может быть необходимо провести проверку доступности использования библиотеки в зависимости от типа её лицензии. Для решения этих задач предпочтительно использовать набор gradle-плагинов vlsi-release-plugins.
Пример конфигурации можно найти в build.gradle.kts
в tasks gatherLicense
, verifyLicenses
, renderLicense
,
renderLicenseCopySpec
, а так же в конфигурациях задач типа Jar
.
Для автоматического наполнения манифеста Jar предпочтительно использовать набор gradle-плагинов gradle-info-plugin.
Они анализируют окружение, git-репозиторий и тд для формирования аттрибутов META-INF/MANIFEST.MF
.
Так же допустимо указывать дополнительные аттрибуты в разделе manifest
в конфигурациях задач типа Jar
.
Лицензирование образа Docker
Для того чтобы собирать образа Docker с указанием требований лицензирования следует
воспользоваться OpenContainers спецификацией.
Для автоматизации можно воспользоваться тем что при сборке через Paketo Buildpacks
в сборку включен
модуль image-labels.
Он позволяет указать все необходимые аттрибуты Docker образа.
Пример конфигурации можно найти в build.gradle.kts
в task bootBuildImage
.