web-dev-qa-db-ja.com

Grails BuildConfig.groovy、ビルド、コンパイル、ランタイムの違いは?

BuildConfig.groovy(1.3.7)のbuildruntime、およびcompileの違いは何ですか

grails.project.dependency.resolution = {

    plugins {
        build "acme:acme-cache:latest.integration"
    }

    dependencies {
        build "com.foo.bar:foobar:1.0.5"       
        runtime "org.Apache.httpcomponents:httpclient:4.0.3"
        compile("com.thoughtworks.xstream:xstream:1.3.1")
    }
}
62
raffian
  • build-ビルドプロセスでのみ必要な依存関係
  • runtime-アプリケーションを実行するために必要ですが、コンパイルはしない依存関係。特定のデータベースベンダーのJDBC実装。コードはその特定の実装ではなくJDBC APIのみに依存するため、通常はコンパイル時にこれは必要ありません。
  • compile-コンパイル時と実行時の両方で必要な依存関係。これは最も一般的なケースです

他にもいくつかの依存関係スコープがあります。

  • test-テストでのみ必要な依存関係。モック/テストライブラリ
  • provided-コンパイル時に必要ですが、アプリにパッケージ化しないでください(通常はコンテナによって提供されるため)。例はサーブレットAPIです
99
Dónal

以前の2つの答えは、コンパイルとビルドの違いについて矛盾しているようです。ビルドはgrails compilegrails run-appを含むスコープですが、コンパイルは前者だけです。

5
John Troxel

Grails 3から、依存関係はGradleによって管理されます。 grails-app/conf/BuildConfig.groovyファイル 置き換えられましたbuild.gradleファイルはプロジェクトのルートにあります。

Grailsユーザーガイド gradleでgrailsの依存関係を設定する方法を説明する と、このトピックの詳細については 関連するGradleドキュメント を参照してください。

2
lifeisfoo

いくつかのgrailsコマンドが違いを説明するのに役立ちます。 grails run-appおよびgrails compilegrails compileはコンパイル手順であり、コンパイル時の依存関係が含まれます。 grails run-appは実行ステップであり、実行時の依存関係が含まれます。ビルドの依存関係は、これらのコマンドのいずれかを実行するために必要となる可能性のあるものです。たとえば、いくつかのビルドイベントにフックするカスタムスクリプトなどです。

したがって、依存関係が含まれていることを確認する必要がある場合は、最適なものを選択します。

1
doelleri