プロジェクトで使用しているすべてのサードパーティライブラリライセンスを自動的に収集する方法を探しています。現在、GitHubでライセンスを手動で収集しています。
これまでのところ、サードパーティのライブラリライセンスを自動的に取得する方法について明確な考えはありません。サードパーティのライセンスを取得する最も信頼できる方法は何ですか?
小さなアイデア:
ほとんどのGithubプロジェクトには、ライセンステキストが含まれています。例: https://github.com/square/dagger 。しかし、依存関係 'com.squareup.dagger:dagger:1.2.2'とそのgithub urlをマッピングできますか?
ほとんどのJVMアーティファクトはmvnrepositoryにあります。 mvnrepository.comにライセンスが記載されているかどうかはわかりません。
.jarファイルには、ライセンステキストが含まれている場合があります。それを抽出する方法は?
これの一部を自動化する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行目を使用します)。