web-dev-qa-db-ja.com

Java Fat-Jar ArchiveとしてLGPLライブラリを含むソフトウェアバンドル

仕事では、Javaアプリケーション(私たちが作成))のソフトウェアバンドルをデプロイしています。これには、多くの外部依存関係があり、それらのほとんどはLGPLであり、BSDライセンスのサードパーティライブラリが配布していますJARアーカイブとして。

現在、単一のJava Fat jarアーカイブとして配布されているソフトウェアのテストクライアントをデプロイしています。Mavenアセンブリプラグインによって作成され、大まかに以下を実行します:

  • すべての依存関係を抽出する
  • それらを単一のjar-archiveとして再バンドルします

すべてのクラスファイルが抽出され、独自のアプリケーションで単一のJARファイルにバンドルされます。同じ名前を持っているため、一部のファイル、主にLICENSE.txtファイルが上書きされることにも気付きました。

これが正しく、LGPLライセンスに準拠しているかどうか疑問に思っています。ソフトウェアを配布するより良い方法は何でしょうか?この特定のパッケージはどのように最適に編成されますか?

ソースコードをソースファイルに直接組み込んだり、バイナリファイルを変更したりすることはありませんでした。ライブラリのソースコードは製品全体に付属しています。 (これは内部で使用されるソフトウェアであり、顧客やその他には展開されていませんが、それは問題ではないと思います。)

PS:Stack Overflowで同じ質問をしたところ、ここで質問するよう提案されました。

8
scravy

Mavenを使用しているので、JARをビルドするために shade plugin に切り替えることをお勧めします。複数の「標準」ライセンスファイルを自動的に処理するように構成でき(リソーストランスフォーマーのセクションを参照)、依存関係に重複するクラスがある場合は警告が表示されます。

2
kdgregory

これは本当に弁護士と話し合うべき難しい問題です。とにかく、LICENSE.txtファイル(1つを除いてすべてを効果的に削除する)を上書きすることは間違いなく禁止です。それらの名前をFoo-LICENSE.txtに変更すると、Bar-License.txtはすぐに実行する必要がある最初のステップです。 LGPLに関しては、libをfatjarで置き換える方法を提供することで、LGPLのセクション4eに準拠するのに十分な場合があります(弁護士にお尋ねください)。弁護士に尋ねるのが現実的でない場合、著者に許可を直接求めることは、そのようにすることの代わりになるかもしれません。

1
user281377