Grails очень медленно разрешает определенные зависимости - PullRequest
0 голосов
/ 02 ноября 2011

У меня «разрешение зависимостей» истекло около 30 секунд для молниеносного компьютера и сети.

Я посмотрел на этот вопрос Grails: очень медленное время развертывания. «Устранение зависимостей ...» занимает 10+ секунд , и у меня нет никаких «снимков» зависимостей. Я очистил свой кеш плюща и принудительно загрузил все заново, без помощи. Включив ведение журнала, эти несколько строк являются нарушителями. Ничего не загружается, но похоже, что каждый раз предпринимаются попытки что-то искать удаленно, учитывая мой сетевой трафик. Обратите внимание, что это ЕДИНСТВЕННЫЕ записи, у которых есть [некоторое число] версия до них, а затем другая после - что не может быть совпадением - что это значит? Как я могу помешать Граалсу попытаться найти эти немного разные версии?

    .... these lines take 20+seconds, everything else is in the milliseconds ...
found commons-logging#commons-logging;1.1.1 in grailsPlugins
[1.1.1] commons-logging#commons-logging;[1.1, 2.0)
found org.apache.httpcomponents#httpclient;4.1.2 in default
[4.1.2] org.apache.httpcomponents#httpclient;[4.1, 5.0)
found org.apache.httpcomponents#httpcore;4.1.2 in default
found org.codehaus.jackson#jackson-core-asl;1.9.1 in default
[1.9.1] org.codehaus.jackson#jackson-core-asl;[1.4,)
found javax.mail#mail;1.4.4 in default
[1.4.4] javax.mail#mail;[1.4,)

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

SimpleDB:

    grails.project.class.dir = "target/classes"
grails.project.test.class.dir = "target/test-classes"
grails.project.test.reports.dir = "target/test-reports"

grails.project.dependency.resolution = {

    inherits "global"

    log "warn"

    String datastoreVersion = "1.0.0.M9"

    repositories {
        grailsPlugins()
        grailsHome()
        grailsCentral()
        mavenRepo "http://repo.grails.org/grails/core" //tried commenting this out, no help
        mavenLocal()
        mavenCentral()
        mavenRepo 'http://repository.codehaus.org'  //tried commenting this out, no help

}

dependencies {

    def excludes = {
        transitive = false
    }
    compile("org.grails:grails-datastore-gorm-simpledb:$datastoreVersion",
             "org.grails:grails-datastore-gorm-plugin-support:$datastoreVersion",
             "org.grails:grails-datastore-gorm:$datastoreVersion",
             "org.grails:grails-datastore-core:$datastoreVersion",
             "org.grails:grails-datastore-simpledb:$datastoreVersion",
             "org.grails:grails-datastore-web:$datastoreVersion") {
         transitive = false
     }        

    runtime("stax:stax:1.2.0", excludes)
    runtime('com.amazonaws:aws-java-sdk:1.2.0')

    test("org.grails:grails-datastore-gorm-test:$datastoreVersion",
         "org.grails:grails-datastore-simple:$datastoreVersion") {
        transitive = false
    }
}

plugins {
    build ":release:1.0.0.RC3", {
        exported = false
    }
}

}

Загрузчик Ajax:

 grails.project.class.dir = "target/classes"
grails.project.test.class.dir = "target/test-classes"
grails.project.test.reports.dir = "target/test-reports"
grails.release.scm.enabled=false

grails.project.dependency.resolution = {
    // inherit Grails' default dependencies
    inherits("global") {
        // uncomment to disable ehcache
        // excludes 'ehcache'
    }
    log "warn" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose'
    repositories {
        grailsPlugins()
        grailsHome()
        grailsCentral()

        // uncomment the below to enable remote dependency resolution
        // from public Maven repositories
        mavenLocal()
        mavenCentral()
        //mavenRepo "http://snapshots.repository.codehaus.org"
        //mavenRepo "http://repository.codehaus.org"
        //mavenRepo "http://download.java.net/maven/2/"
        //mavenRepo "http://repository.jboss.com/maven2/"
    }
    dependencies {
        // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.

        test 'org.gmock:gmock:0.8.1'
    }
    plugins {

        //build ':release:1.0.0.RC3'

    }
}

Ответы [ 2 ]

5 голосов
/ 03 ноября 2011

и я нашел виновника. Если используемый вами плагин полагается на библиотеку в Maven, которая имеет «открытые» зависимости, Grails будет идти и смотреть каждый раз, еслиЕсть более новые версии для скачивания в ассортименте.Я понятия не имею, почему кто-то может указать это так.Кажется, это приведет к ненадежному поведению.Для меня виновником является java aws-библиотека Amazon, естественно необходимая плагину simpledb, который общается с облаком Amazon.

http://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk/1.2.10

обратите внимание, что некоторые его зависимости похожи на эту

org.apache.httpcomponents httpclient [4.1, 5.0)

похоже, что каждый раз, когда grails ищет новую версию (и при загрузке, если она существует, я просто замечаю, что 4.2-alpha1 httpclient падаеткогда я запустил это время).

Удалив эту зависимость из плагина и вручную добавив необходимые библиотеки в мою папку .lib, я сократил время запуска с> 30 с до <1 с </p>

2 голосов
/ 30 апреля 2012

Если вы запустите grails --offline run-app, то разрешение зависимостей будет отключено (по крайней мере, частично), и время запуска будет намного быстрее.

Конечно, вы должны быть уверены, что вам не нужны никакие новые зависимости для загрузки - я потратил время на поиски решения проблемы, которая, как оказалось, была вызвана тем, что я запускал grailsне в сети.Я быстро научился:)

Я согласен, что время запуска Grails ужасно медленное, к счастью, остальная часть фреймворка повышает производительность - в основном до такой степени, что вы более производительны, чем обычная старая Java: -)

...