我的“解决依赖关系”大约需要30秒,以便快速启动计算机和网络。
我看过这个问题Grails: Very slow deploy time. 'Resolving Dependencies...' takes 10+ seconds,我似乎没有任何“快照”依赖项。我已经清理了我的常春藤缓存并强制重新下载所有内容,没有任何帮助。启用日志记录后,这几行就是违规者。没有任何内容正在下载,但考虑到我的网络流量,似乎每次都尝试远程查找内容。请注意,这些是仅在它们之前具有[某个数字]版本的条目,然后是不同的版本 - 这不是巧合 - 这是什么意思?如何阻止Grails试图找到这些略有不同的版本?
.... 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,)
我正在使用两个必须是违法者的插件,并在下面列出了他们的dependencies.groovy。我已经尝试评论任何明确的远程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'
}
}
答案 0 :(得分:5)
我找到了罪魁祸首。 如果您使用的插件依赖于maven中具有“开放式”依赖关系的库,那么grails将会查找每个时间,如果有更新的版本要在该范围内下载。我不知道为什么有人会像这样指定它。这似乎会导致不可靠的行为。对我来说,罪魁祸首是亚马逊的java aws库,自然需要与亚马逊的云对话的simpledb插件。
http://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk/1.2.10
注意它的一些依赖关系是如何的
org.apache.httpcomponents httpclient [4.1,5.0]
似乎每次,grails都在寻找更新版本(如果存在则下载,我只是注意到,当我这次运行时,httpclient的4.2-alpha1会降下来。)
通过从插件中删除该依赖项并手动将所需的库添加到我的.lib文件夹,我将启动时间从> 30秒减少到<1秒
答案 1 :(得分:2)
如果运行grails --offline run-app
,则依赖性解析(至少部分)被禁用,启动时间会快得多。
当然你必须确保你不需要下载任何新的依赖项 - 我已经花时间寻找解决问题的解决方案,结果是因为我正在离线运行grails。我尽快学到了:)
我同意Grails的启动时间非常慢,幸运的是框架的其余部分提高了工作效率 - 大多数情况下,你比普通的旧java更有效率: - )