web-dev-qa-db-ja.com

サードパーティライブラリライセンスを取得する方法

プロジェクトで使用しているすべてのサードパーティライブラリライセンスを自動的に収集する方法を探しています。現在、GitHubでライセンスを手動で収集しています。

これまでのところ、サードパーティのライブラリライセンスを自動的に取得する方法について明確な考えはありません。サードパーティのライセンスを取得する最も信頼できる方法は何ですか?

小さなアイデア:

  • ほとんどのGithubプロジェクトには、ライセンステキストが含まれています。例: https://github.com/square/dagger 。しかし、依存関係 'com.squareup.dagger:dagger:1.2.2'とそのgithub urlをマッピングできますか?

  • ほとんどのJVMアーティファクトはmvnrepositoryにあります。 mvnrepository.comにライセンスが記載されているかどうかはわかりません。

  • .jarファイルには、ライセンステキストが含まれている場合があります。それを抽出する方法は?

関連: サードパーティのライブラリライセンス「書類」を整理するためのベストプラクティスは何ですか?

4
Raymond Chenon

これの一部を自動化する1つの可能な方法は、次のアルゴリズムです。

Add the project GAV to queue
For each GAV in queue 
  Add all dependencies from GAV to queue // optional after first run? 
  Download jar
  Extract/unzip jar and search root directory of jar for file containing "license" // see Java Zip classes
  Parse root pom.xml for license information
  if neither work
     output that license information could NOT be found
  else
     save license information for GAV
// end for loop       

これを行ってファイルをプロジェクトのルートディレクトリ(ビルドディレクトリではなく)に出力するMavenプラグインを作成して、ファイルが変更されたときに気付くようにすることができます。それ以外の場合は、Perl/pythonスクリプトの方が簡単かもしれません(しかし、ハックの詳細も.. :))。

コードで推移的な依存関係を知らなくても簡単に使用できることを考えると、 Ban Transitive Dependencies エンフォーサールールの使用も検討する必要があります。

そうしない場合は、すべての推移的な依存関係のライセンスを必ずスキャンしてください(常にアルゴリズムの3行目を使用します)。

1
Marco