私の質問は少し一般的ですが、Gradleにもリンクしています。
なぜコンパイルとランタイム構成が必要なのですか?
何かをコンパイルするとき、バイトコード内のJavaクラスを変換するためにアーティファクトが必要なので、コンパイル構成が必要ですが、なぜランタイム構成が必要なのですか?
馬鹿げているように聞こえたら申し訳ありませんが、わかりません。
最も一般的なケースでは、コンパイル時に必要な成果物は、実行時に必要な成果物のサブセットです。たとえば、app
というプログラムがライブラリfoo
を使用し、ライブラリfoo
内部がライブラリbar
を使用するとします。 foo
をコンパイルするにはapp
のみが必要ですが、実行するにはfoo
とbar
の両方が必要です。これがデフォルトで、Gradleのcompile
構成に設定したすべてがruntime
構成にも表示されますが、その反対は真実ではありません。