2011-07-10 9 views
8

Nexus repository managerにArtifactoryのようなライセンスマネージャーが含まれているかどうかを知りたい(このプラグインはhttp://wiki.jfrog.org/confluence/display/RTF/License+Control)。プロジェクトの依存関係(ライブラリ)のライセンスをどのように管理していますか?

Nexusでプラグインを使用する方法がない場合は、プロジェクトの依存関係のライセンス(Mavenを使用)をどのように管理しますか?

商用プロジェクトでは、最終的なアーティファクト(.jar、.warなど)にGPLライブラリを含めることはできません。

+0

Sonatypeは、「インサイト」と呼ばれるライセンス管理とコンプライアンスのための新製品を発売してきたhttp://www.sonatype.com/Products/Sonatype-Insight/Development-Insight –

答えて

6

Artifactoryの機能は非常に少数のMavenのセントラル・モジュールが自分のPOMで最新のライセンス情報を持っているこれらのアプローチの両方で実用上問題Mavenのライセンスバリデータプラグイン

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

を使用してエミュレートすることができます。私の見ていることから、ビルドのライセンスコンプライアンスを評価するという問題に対する本当の解決策にはならない素晴らしいアイデアです...

私の理想的な解決策は、Nexusの内容をスキャンする外部プロセスセットです利用可能なライセンス情報のリポジトリ。この情報を使用して、Nexus Professionalのprocurement suiteをシードして、リリース(非開発ビルド)で使用するために承認済みリポジトリの内容を制御します。

バイナリには、テキスト形式のライセンスファイルが含まれています。また、関連するソースコードパッケージのライセンスおよびIP情報のスキャンも可能です。このタスクを実行するためのサードパーティツールがいくつか用意されています。私が検討してきたものは以下のとおりです。結論として

、Mavenのセントラルモジュールのライセンスに信頼性の高いメタデータを提供できるようになるまで、私はこの解決策を考えます問題は高度にカスタマイズされたままで残っています。

1

Artifactoryのアプローチは少し異なります。アーティファクトのメタデータのみの出発点として使用されますが、その日のユーザの最後に行方不明/間違ったライセンス情報記入し、修正することができます:最初は

  1. を、(すべての親のPOMを含む)、POMまたはアイビーの記述子を抽出するために使用されていますヒューリスティックなライセンス情報。この自動検出ステップは純粋にオプションです。
  2. このライセンス情報は、チェックサムに基づいて成果物に添付され、ユーザーによって完全に編集可能です。管理者は、ライセンスの詳細を更新して、アーティファクトを存続させることができます。
  3. すべてのライセンスは、グローバルポリシーに従って承認または未承認できます。
  4. デプロイ時に、すべての依存関係のライセンス情報が読み込まれます。未承認または未知のライセンスが見つかった場合は、事前に設定されたアドレスに情報が送信されます。

これにより、ビルドプロセスによってコミットされ、取得されるとすぐに、新しい依存関係(およびそれぞれのライセンス)の変更/追加を処理できます。

もう1つの重要な違いは、複数のライセンスでアーティファクトを処理できることです.1つのライセンスのみが承認され、他のライセンスは承認されません。

あなたはここでそれについての詳細を読むことができます -

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> 

ビルドをバンドルするときにjarファイルと一緒にライセンスを取得するために<ivy:retrieve/>を使用してください。

<ivy:retrieve pattern="${ivy.local}/[artifact].[ext]" conf="compile, runtime" type="jar, license" /> 
+0

またオフトピックです。ユーザは、Maven/Nexusの代替案について質問しています - アーティファクトの紹介ではありません。 – Eddie

関連する問題