Grails BuildConfig.groovy, разница между сборкой, компиляцией и временем выполнения?


в чем разница между build,runtime и compile, в BuildConfig.groovy (1.3.7)

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")
    }
}
4 61

4 ответа:

  • build - зависимость, которая необходима только для процесса сборки
  • runtime - зависимость, которая необходима для запуска приложения, но не компилирует его, например, реализация JDBC для конкретного поставщика базы данных. Обычно это не требуется во время компиляции, поскольку код зависит только от API JDBC, а не от его конкретной реализации
  • compile - зависимость, которая необходима как во время компиляции, так и во время выполнения. Это самое распространенное дело

есть несколько других типов зависимостей:

  • test - зависимость, которая нужна только тестам, например, издевательская / тестовая библиотека
  • provided - зависимость, которая необходима во время компиляции, но не должна быть упакована с приложением (обычно потому, что она предоставляется контейнером). Примером является сервлет API

Кажется, что 2 предыдущих ответа противоречат различию между компиляцией и сборкой. Я считаю, что build-это область, которая включает grails compile и grails run-app, в то время как компиляция-это только первое.

из Grails 3 зависимости управляются Gradle. Элемент grails-app/conf/BuildConfig.groovy file был заменен на build.gradle файл в корне проекта.

руководство пользователя Grails объясните, как установить Grails depencies с помощью gradle и относится к связанная документация Gradle для получения более подробной информации об этой теме.

несколько команд grails помогают проиллюстрировать разницу. Рассмотрим grails run-app и grails compile. grails compile является шагом компиляции и будет включать в себя зависимости времени компиляции. grails run-app - Это шаг выполнения и будет включать в себя зависимости времени выполнения. Зависимости сборки-это все, что может потребоваться для выполнения любой из этих команд, например, пользовательский сценарий, который подключается к некоторым событиям сборки.

таким образом, вы выбрали бы тот, который лучше всего подходит, когда вам нужно быть уверенным, что зависимость включенный.