2012-01-15 16 views
6

私はMavenの依存関係について考えていました。 Mavenはそれらをダウンロードしますが、コンパイル対象のJVMのバージョンとコンパイラのバージョンは不明です。これにより、次の2つの質問が発生します。Mavenとの依存関係の再コンパイル - 可能ですか?パフォーマンスの向上?

  • 依存関係の再コンパイルでより高速な依存関係ライブラリが得られますか? これを検索しようとしましたが、十分な回答が見つかりませんでした。 1.6の場合はSplit bytecode verificationであり、これはターゲット1.6でコンパイルしたときに行われることがわかりました。
    Are Java 6's performance improvements in the JDK, JVM, or both?という新しいバージョンのjavacがより最適化されたコードを生成する可能性があるという質問もあります。
  • 依存ライブラリの再コンパイルをMavenで行うことは可能ですか?ソースをダウンロードし、1.6のターゲットに関する情報を入れて、mvnクリーンインストールを実行するようにMavenを設定することは可能でしょうか?
    私はMaven Dependency plugindependency:sourcesの目標を認識しています。それはソースのダウンロードに使用することができます。
    Maven Replacer Pluginファイル内のテキストを置き換えることもできます。 Issue 58に記載されているように、XPathのサポートが実装されました。
    これらのプラグインを使用して依存関係を実装したり、その依存関係を実行したりすることは可能でしょうか?私は、おそらくMaven Replacer Pluginを使用して、依存関係について実行する方法についてはわかりません。
    またはプロジェクトの設定の優先されますので、のpom.xml変更を避けるだろう、ユーザーののsettings.xmlでビルドプロファイルを持つターゲットJavaのバージョンを設定するための簡単な方法はありますか?

答えて

3

javacは、最適化が行われておらず、最も早い時期から存在しています。 Java 1.0で構築されたコードをお持ちの場合は、改善が見られるかもしれませんが、過去数十年間のものは今日のようにバイトコードで最適なものになる可能性があります。

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

1

Mavenの依存関係はちょっと考えてみましょう。

  • がバージョン記述子下リポジトリ
  • に存在するアーカイブ、
  • に梱包されています。最も一般的な意味では、それはそれ自身のライフサイクルを生きて、他の誰かによって開発されたソフトウェアの一部です(グループ、アーティファクト、バージョン)。

これはすべてMavenの保証です。それはそれがJava(リソースやネイティブライブラリなど)であるとは言いません。あまりない。依存関係の自動再コンパイルを要求するにはあまりにも余りありません。

+0

それは良い点です。リソースを含むパッケージはパフォーマンスに影響しないことを認識しています。 私はコンパイルされたJavaライブラリのケースを検討していました。それらを再コンパイルし、ターゲットJavaバージョンを1.6に強制する方法があれば(もしあれば、それは何か違いがあります)。 私はLinuxパッケージビルドシステムのように考えています。パッケージをコンパイルすることは可能ですが、確かにパッケージをコンパイルすることができます。 perofrmaceに影響を与えない文書。 – Aries