6

Mavenの依存関係について考えていました。Maven はそれらをダウンロードしますが、どのターゲット バージョンの JVM がどのコンパイラでコンパイルされているかは不明です。これにより、次の 2 つの疑問が生じます。

  • 依存関係の再コンパイルにより、依存関係ライブラリが高速になりますか? これを検索しようとしましたが、十分な答えが見つかりませんでした。1.6 には、ターゲット 1.6 でコンパイルするときに行われるSplit bytecode validationがあることがわかりました。また、JDK、JVM、またはその両方で Java 6 のパフォーマンスが向上したの
    かという質問もあります。javac の新しいバージョンでは、より最適化されたコードが生成される可能性があることが言及されています。
  • Maven で依存ライブラリの再コンパイルを実行することは可能ですか? ソースをダウンロードし、1.6 ターゲットに関する情報をそこに置き、mvn clean installを実行するように Maven を構成することは可能でしょうか? Maven Dependency プラグインdependency:sources の目標
    を認識しています。これは、ソースのダウンロードに使用できます。ファイル内のテキストの置換を可能にするMaven Replacer Plugin もあります。Issue 58に記載されているように、XPath サポートが実装されました。

    これらのプラグインを使用して依存関係を実装し、その依存関係を実行することは可能でしょうか? 依存関係でそれを実行する方法がわかりません-おそらく、Maven Replacer Plugin を使用して、展開された依存関係 pom.xml に構成を挿入しますか? または、ユーザーのsettings.xml
    でビルド プロファイルを使用してターゲット Java バージョンを構成し、プロジェクト設定を優先してpom.xmlの変更を回避する簡単な方法はありますか?
4

2 に答える 2

3

javac最適化はほとんど行われておらず、最初からあったものです。(そして歴史的なものと見なすこともできます) Java 1.0 でビルドされたコードがある場合、改善が見られるかもしれませんが、過去 10 年間のコードは、現在と同じようにバイト コードで最適である可能性があります。

最適化のほとんどは JVM 自体で行われ、まったく同じコードであっても、Java 6 update 30 は Java 6 update 0 よりも高速に実行されることがわかります。

于 2012-01-15T09:26:52.867 に答える
1

Maven の依存関係とは何かを考えてみましょう。最も一般的な意味では、それは他の誰かによって開発されたソフトウェアの一部であり、次のような独自のライフサイクルを生きています。

  • アーカイブにパックされ、
  • リポジトリに存在する
  • バージョン記述子 (グループ、アーティファクト、バージョン) の下。

Maven が保証するのはこれだけです。Java であるとさえ言わないことに注意してください (たとえば、リソースやネイティブ ライブラリである可能性があります)。あまりない。依存関係の自動再コンパイルを要求するには少なすぎます。

于 2012-01-16T09:27:20.257 に答える