2013-05-22 19 views
61

私の質問は少し一般的ですが、Gradleともリンクしています。Gradleのコンパイルと実行時設定の違い

なぜコンパイルと実行時の設定が必要ですか?

コンパイル時に私のJavaクラスをバイトコードで変換するためのアーティファクトが必要なので、コンパイル設定が必要ですが、実行時設定が必要な理由はJVMでアプリケーションを実行するためです。

申し訳ありませんが、馬鹿に聞こえますが、分かりません。

答えて

91

最も一般的なケースでは、コンパイル時に必要な成果物は、実行時に必要なもののサブセットです。たとえば、appというプログラムがライブラリfooを使用し、ライブラリfooの内部でがライブラリbarを使用しているとします。コンパイルにはfooが必要ですが、実行するにはfoobarの両方が必要です。このため、デフォルトでは、Gradleのcompile設定に格納されているものはすべて、runtime設定で表示されますが、それとは逆のことが当てはまります。

+10

これは、http://www.gradle.org/docs/current/userguide/dependency_management.htmlに明示的に言及されていません。彼らはコンパイルとランタイムの両方を、明示的にその意味を明示せずに使用します。 – silasdavis

+2

@silasdavisドキュメントでは、8.3のhttp://www.gradle.org/docs/current/userguide/userguide_single.html#configurationsの違いについて説明しています。依存関係の設定 – angelcervera

+0

@angelcerveraああそうです、8.依存関係管理の基礎、および51.依存関係管理。私はなぜ彼らが2つのセクションを持っているのか分かりますが、後者が前者を参照するといいでしょう。私は51に上陸し、それが完全な説明をすると予想した。 – silasdavis

関連する問題