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.