2012-02-10 3 views
7

Я немного смущен различными способами размещения информации о лицензии в проекте maven.Maven Licensing

Если я поместил лицензию в тег внутри файла POM, значит ли это, что весь мой проект имеет эту лицензию?

Если я поместил файл license.txt в проект, значит ли это, что проект принадлежит этой лицензии?

А что, если я поставлю лицензию в начале каждого .java-файла, который у меня есть. Означает ли это, что каждый класс, который я написал, может иметь разные лицензии?

Что касается ситуации, когда у меня есть информация о лицензии в заголовке файла POM. Означает ли это, что все файлы находятся под этой лицензией?

So confused ...

+0

Я начал отвечать на это, но потом заметил, что это действительно не так просто, как может показаться. Я бы сказал, что это работает как наследование, но так ли это? А как насчет возможного двойного лицензирования? Также жду, когда кто-нибудь умнее ответить ... –

+4

Я голосую, чтобы закрыть этот вопрос как не по теме, потому что ** речь идет о лицензировании или юридических проблемах **, а не о программировании или разработке программного обеспечения. [См. Здесь] (http://meta.stackoverflow.com/a/274964/1402846) для получения дополнительной информации и [помощь/по теме] для получения дополнительной информации. –

ответ

2

Проект может иметь разные лицензии в соответствии с потребностями. Возможно, вам захочется иметь лицензию Apache и лицензию MIT, BSD. Идея позволить вашему коду иметь несколько лицензий - это позволить компаниям выбрать лицензию, которой они довольны.

Эти лицензии обычно хранятся в META-INF/LICENSE. * файлов (например, LICENSE.BSD, LICENSE.Apache и т. Д.).

Если вы определяете лицензию в POM, это означает, что плагин сайта Maven будет использовать эту строку при создании сайта Maven.

Лучше всего иметь соответствующий заголовок лицензирования над каждым из ваших классов, чтобы избежать возможной путаницы для усыновителей проекта.

Если вы выполняете так называемое «затенение» (включая классы других библиотек в вашей банке), то вы, скорее всего, получите свою лицензию в своем каталоге META-INF. Будьте осторожны, так как это может перезаписать лицензию вашего проекта, если имя соответствующего файла лицензии просто LICENSE.

Обычно вы размещаете файлы лицензий в каталоге src/main/resources/META-INF.

5

Не беспокойтесь, вы не единственный, кто сбит с толку. Эта проблема не ограничивается Java. Maven, по крайней мере, обеспечивает механизм разбивки проекта на отдельные модули, каждый из которых содержит файл метаданных (POM), описывающий лицензию модулей.

Проблема заключается в том, что пользователь программного обеспечения, желающий быть совместимым с лицензией, может быть уверен, что все файлы (в программном пакете) принадлежат к одной и той же лицензии на программное обеспечение. Существуют незначительные различия и последствия использования некоторых лицензий с открытым исходным кодом.

HP open получил свою систему сканирования лицензий.

http://www.fossology.org/

Это позволяет организации сканировать исходный код 3 участника и открыть найти библиотеки лицензию. Этот анализ следует стандартным методам, которые возникли с течением времени (Лицензия на README, Лицензия в заголовке комментария и т. Д. И т. Д.).Для организации, которые предпочитают, чтобы передать эту работу, есть коммерческие компании, ведение баз данных с открытым исходным кодом:

Там некоторый свет в конце туннеля. Фонд Linux начал инициативу для решения этой проблемы:

http://spdx.org/

Это отличная идея. Создайте единый стандарт, который позволяет разработчикам программного обеспечения явно указывать лицензию каждого файла. Один реальный успех группы - сбор общего списка имен лицензий. Единственным недостатком, как я вижу, является отсутствие поддержки разработчиков и поддержки инструментов.

В заключение я бы рекомендовал хранить все файлы в модуле maven той же лицензии. Предполагая, что ваш модуль является открытым исходным кодом, укажите эту лицензию в заголовок с комментариями и опубликуйте эту лицензию в Maven POM. Если ваш код является закрытым источником, мне кажется, что предоставление лицензии в каталог META-INF помогает, но не полностью решает проблемы соответствия.

+0

+1: Очень хороший комментарий. – carlspring

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