2011-07-10 116 views
8

我想知道Nexus repository manager是否包含像Artifactory的許可證管理器(使用此插件:http://wiki.jfrog.org/confluence/display/RTF/License+Control)。如何管理項目的依賴項(庫)的許可證?

如果沒有辦法通過插件在Nexus中執行此操作,那麼如何管理項目依賴關係的許可證(使用maven)?

例如對於商業項目,我不能將GPL庫包含到最終的工件(.jar,.war等)中。

+0

Sonatype的都推出了新產品的許可證管理和法規遵從所謂的「洞察」 http://www.sonatype.com/Products/Sonatype-Insight/Development-Insight –

回答

6

的Artifactory的功能可以使用Maven的許可證驗證插件

http://code.google.com/p/maven-license-validator-plugin/

的實際問題,這兩種方法,很少有Maven的中央模塊,在他們的多金屬氧酸鹽了最新的許可信息進行仿真。因此,從我所看到的情況來看,這是一個很好的主意,它不能真正解決評估版本的許可證合規性的問題......

我的理想解決方案是一組外部過程,它們掃描Nexus的內容存儲庫中的可用許可證信息然後,這些信息將用於播種Nexus Professional的procurement suite,以控制已批准存儲庫的內容以供發佈(非開發版本)使用。

某些二進制文件包含文本許可證文件,或者也可以掃描關聯的源代碼包中的許可證和IP信息。許多第三方工具可用於執行此任務。我一直在考慮的是:

總之,直到Maven的中央可以提供模塊的許可可靠的元數據,我認爲這個解決方案問題將仍然高度定製和次優

1

Artifactory採取的做法有點不同,因爲原料工件元數據僅作爲起點,但在這一天的用戶的端部可以完成和修改丟失/不正確的許可證信息:

  1. 首先,POM(包括所有父的POM)或常春藤描述符被用於提取啓發式許可證信息。這個自動發現步驟純粹是可選的。
  2. 此許可證信息隨附於基於其校驗和的工件上,並且可由用戶完全編輯。管理員可以更新許可證詳細信息,這些信息將在工具生命週期內與工件保持一致。
  3. 根據全球政策,每個許可證都可以被批准或不被批准。
  4. 在部署時,會讀取所有依賴項的許可證信息 - 如果發現未經批准或未知的許可證,則將包含該信息的電子郵件警報發送到預配置的地址。

這使您可以在構建過程提交併提取它們時立即處理新依賴項(及其各自的許可證)的更改/添加。

另一個關鍵區別是能夠使用多個許可證處理工件,其中只有一個許可證被批准,其他許可證不是。

你可以閱讀更多關於它在這裏 -

http://wiki.jfrog.org/confluence/display/RTF/License+Control

+2

這並不是原來的問題發言,並且僅僅是Artifactory的市場推廣。這聽起來像用戶已經熟悉jfrog的產品,並且特別要求瞭解Nexus的替代品。 – Eddie

0

與Artifactory的+常春藤+ ant使用定製的解決方案是掃描許可證信息每個模塊。如果找到許可證,請在Artifactory中填充該許可證文件,並更新其ivy.xml,以使其作爲已發佈的工件提供。然後致電<ivy:retrieve/>以獲取許可證及其jar文件。

許可證可以在模塊的ivy.xml中指定爲URL。在這種情況下,使用antget任務下載許可證並將其寫入文本文件。

[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> 

另外,許可證可以作爲模塊的.jar文件中的文本文件。在這種情況下,使用antunjar任務來提取許可證並將其寫入文本文件。

[inside junit's .jar file as an example] 
junit-4.8.2.jar/LICENSE.txt 

一旦許可證已被寫入了作爲一個文本文件,使用antxmltask任務的許可添加爲神器。

[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" /> 
+0

也是題外話。用戶詢問有關Maven/Nexus的替代方案 - 不是對artifactory的解釋。 – Eddie