1

1 つのプロジェクトで複数の API を使用する場合、各 API に必要な JAR ファイルが、プロジェクトで既に使用されている Apache Commons、ロギングなどの他の必要なライブラリに加えて、プロジェクトに追加されます。これにより、多数の jar ファイルが生成される場合があります。

特定の API またはライブラリが使用されなくなったら、それに関連付けられている JAR ファイルを削除すると便利です。ただし、別の API またはライブラリがそれを必要とするリスクがあります。これは、プロジェクトの構築中に常に明らかになるとは限りません。欠落している JAR は、実行時にのみエラーをスローすることがあります。

次の質問があります。

  1. この問題に対処する最善の方法は何ですか? つまり、後で実行時エラーのリスクを冒さずに JAR を削除できるでしょうか?
  2. Maven がこの問題を解決すると言われています。そうですか?使用する外部 API が Maven ベースでない場合、機能しますか? 実行時エラーを気にせずに JAR を削除できますか? Maven ベースになるようにプロジェクト全体を書き直す必要がありますか?
  3. 非 JVM プラットフォームは、共有ライブラリの問題とそれらの削除にどのように対処しますか? Java にはこの分野が欠けているのでしょうか、それともすべてのプラットフォームに共通の問題なのでしょうか?
4

2 に答える 2

1

はい、Maven がこの場合に役立つことに同意します。基本的に Maven では、各アーティファクト (jar/war/ear/etc) のコンパイルとランタイムの依存関係が pom.xml ファイルで宣言されています。複数の依存関係が同じアーティファクトに依存している場合、最新バージョンが使用されます。例:

A-1.0.jar -- depends on --> C-2.0.jar
B-1.0.jar -- depends on --> C-2.1.jar

プロジェクトには C-2.1.jar のみが含まれています。

必要な依存関係が見つからない/削除された場合、Maven ビルドは自動的に失敗します。したがって、実行時の依存関係が失われるのを避けるために、特定のアーティファクトへの実行時スコープで依存関係を宣言できます。必要がなくなったら、それを取り除くだけです。

于 2013-05-19T23:57:29.493 に答える
0

私が何年も前に UNIX で使っていた古いトリックがありますが、それはまだうまくいくかもしれません。最初に UNIX の「タッチ」を使用して、すべてのファイルの日付/時刻を現在の日付/時刻に設定します。その後、少なくとも 1 分間待ちます。次に、アプリケーションを実行します。次に、UNIX の「ls -lut」を実行してすべてのファイルを一覧表示します。ただし、今回は使用されなかったファイルの日付/時刻が最初のステップで設定されますが、使用されたファイルの日付/時刻はより新しいものになります。最後に使用された日付/時刻を報告する「u」スイッチ。

于 2013-05-20T00:12:46.587 に答える