Как вы управляете лицензиями зависимостей (библиотек) вашего проекта? [закрытый]
Я хотел бы знать, если Nexus repository manager включает менеджер лицензий, такой как Artifactory (с этим плагином:http://wiki.jfrog.org/confluence/display/RTF/License + контроль).
Если нет способа сделать это в Nexus через плагин, как вы управляете лицензиями зависимостей вашего проекта (с maven) ?
например, для коммерческого проекта я не могу включить библиотеку GPL в конечный артефакт (.сосуд. ,война, так далее.).
3 ответов
функциональность Artifactory может быть эмулирована с помощью плагина Maven license validator
http://code.google.com/p/maven-license-validator-plugin/
практическая проблема с обоими этими подходами в том, что очень немногие центральные модули Maven имеют актуальную информацию о лицензии в своих POMs. Итак, из того, что я вижу, это отличная идея, которая не соответствует реальному решению проблемы оценки лицензии вашей сборки соответствие...
мое идеальное решение-это внешний набор процессов, которые сканируют содержимое репозитория Nexus на наличие информации о лицензии. Эта информация затем используется для семян Nexus Professional в закупок люкс для управления содержимым утвержденного репозитория для использования в выпуске (сборки без разработки).
некоторые двоичные файлы содержат текстовые файлы лицензий, а также связанные пакеты исходного кода также могут быть отсканированы для информации о лицензии и IP. Для выполнения этой задачи имеется ряд сторонних инструментов. Те, которые я рассматривал, являются:
В заключение, пока Maven Central не сможет предоставить надежные метаданные о лицензировании модулей, я думаю, что решения этой проблемы останутся сильно подгонянный и sub-optimal
подход Artifactory немного отличается, так как необработанные метаданные артефактов используются только в качестве отправной точки, но в конце дня пользователи могут заполнить и изменить отсутствующую / неправильную информацию о лицензии:
- сначала для извлечения эвристической информации о лицензии используются дескрипторы POM (включая все родительские Pom) или Ivy. Этот шаг автоматического обнаружения является необязательным.
- эта информация о лицензии затем присоединяется к артефактам на основе их контрольной суммы, и полностью редактируется пользователями. Администраторы могут обновлять сведения о лицензии, которые будут придерживаться артефакта в течение его жизни.
- каждая лицензия может быть одобрена или не одобрена в соответствии с глобальной политикой.
- во время развертывания информация о лицензии всех зависимостей считывается - если неутвержденные или неизвестные лицензии найдены, оповещение по электронной почте с информацией отправляется на предварительно настроенные адреса.
Это позволяет вам иметь дело с изменениями / дополнениями новых зависимостей (и их соответствующие лицензии), как только они будут зафиксированы и подобраны процессом сборки.
еще одним ключевым отличием является возможность обрабатывать артефакты с несколькими лицензиями, где только одна из лицензий утверждена, а другие нет.
вы можете прочитать больше об этом здесь -
http://wiki.jfrog.org/confluence/display/RTF/License + контроль
индивидуальное решение для использования с Artifactory + Ivy+ant
сканировать каждый модуль для получения информации о лицензии. Если лицензия найдена, заполните этот файл лицензии в Artifactory и обновите его ivy.xml
чтобы он был доступен как опубликованный артефакт. Тогда звоните <ivy:retrieve/>
чтобы получить лицензию вместе с ее файлом jar.
лицензия может быть указана в модуле ivy.xml
как URL. В этом случае используйте ant
' s get
задача загрузить лицензию и записать ее в текстовый файл.
[inside log4j's ivy.xml as an example]
<ivy-module xmlns:m="http://ant.apache.org/ivy/maven" version="2.0">
<info organisation="log4j" module="log4j" revision="1.2.16" status="integration"
publication="20120620150430">
<license name="The Apache Software License, Version 2.0"
url="http://www.apache.org/licenses/LICENSE-2.0.txt"/>
...
</info>
</ivy-module>
кроме того, лицензия может быть включена в качестве текстового файла в. В этом случае используйте ant
' s unjar
задача извлечь лицензию и записать ее в текстовый файл.
[inside junit's .jar file as an example]
junit-4.8.2.jar/LICENSE.txt
после того, как лицензия была выписана в виде текстового файла, используйте ant
' s xmltask задача добавить лицензию в качестве артефакта.
[inside log4j's ivy.xml as an example]
<publications>
<artifact conf="master" ext="jar" name="log4j" type="bundle"/>
<artifact conf="sources" ext="jar" m:classifier="sources" name="log4j" type="source"/>
<artifact conf="javadoc" ext="jar" m:classifier="javadoc" name="log4j" type="javadoc"/>
<!-- next line added -->
<artifact conf="master" ext="txt" name="log4j" type="license"/>
</publications>
опубликовать измененную ivy.xml
и лицензию на Artifactory.
<ivy:resolve file="${ivy.xml}" />
<ivy:publish resolver="${resolver}" pubrevision="@{rev}" status="integration"
overwrite="true" forcedeliver="true" haltonmissing="false"
srcivypattern="${ivy.local}/[organisation]/[module]/ivy-[revision].xml" >
<artifacts pattern="${ivy.local}/[organisation]/[module]/ivys/ivy-[revision].[ext]" />
<artifacts pattern="${ivy.cache.dir}/[organisation]/[module]/licenses/[module]-[revision].[ext]" />
</ivy:publish>
использовать <ivy:retrieve/>
чтобы получить лицензию вместе с ее файлом jar при объединении с вашей сборкой.
<ivy:retrieve pattern="${ivy.local}/[artifact].[ext]" conf="compile, runtime" type="jar, license" />