1

我使用的是 Grails 1.3.6,并且在部署战争时遇到了上下文加载器的问题。与 run-app 一起工作得很好,但不是 run-war 或 war。

在没有想法之后,我想也许将 Grails 更新到 2.1.1 会有所帮助,但我只是为自己挖了一个更深的洞。

插件似乎来来往往是随机的。每次我退出 STS 并重新启动时,我都会得到一组不同的插件。安装它们不会安装它们,卸载它们也不会卸载它们,无论是通过管理器还是命令行。比如我已经多次升级jquery到1.8.3,但是项目在plugins下还是显示jquery 1.8.0。卸载一个插件后,它仍然会显示在插件下,但是当我再次卸载它时,它说它无法卸载它,因为它没有安装。

主要问题在于灵活。无论我做什么,我的应用程序都无法解析 grails.plugins.nimble.core.ProfileBase 或任何其他属于 nimble 插件的类。

所以使用 nimble 作为测试用例:

在我的项目资源管理器中:插件文件夹包括“nimble 0.4-SNAPSHOT”。

在 application.properties 中,有一行“plugins.nimble=0.4-SNAPSHOT”。

在 ~/.grails/2.1.1/projects/MyProject/plugins 中,有一个带有源代码的 nimble-0.4-SNAPSHOT 文件夹。

在 .../myProject/lib 中同时存在“nimble-0.4-SNAPSHOT.jar”和“nimble-0.4-SNAPSHOT.zip”,因为在不同的点它正在寻找 jar 或 zip。我只是将扩展名从 .zip 更改为 .jar。

在 Grails 插件管理器中,nimble 有一个绿色复选标记,表明它已安装。

我的 BuildConfig.groovy 文件保持不变(虽然我尝试了很多不同的东西,但我已将其设置回原始文件),但为了好玩而将其包含在此处:

grails.servlet.version = "2.5" // Change depending on target container compliance (2.5 or 3.0)
grails.project.class.dir = "target/classes"
grails.project.test.class.dir = "target/test-classes"
grails.project.test.reports.dir = "target/test-reports"
grails.project.target.level = 1.6
grails.project.source.level = 1.6
//grails.project.war.file = "target/${appName}-${appVersion}.war"

grails.project.dependency.resolution = {
// inherit Grails' default dependencies
inherits("global") {
    // specify dependency exclusions here; for example, uncomment this to disable ehcache:
    // excludes 'ehcache'
}
log "warn" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose'
checksums true // Whether to verify checksums on resolve

repositories {
    inherits true // Whether to inherit repository definitions from plugins

    grailsPlugins()
    grailsHome()
    grailsCentral()

    mavenLocal()
    mavenCentral()

    // uncomment these (or add new ones) to enable remote dependency resolution from public Maven repositories
    //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.

    // runtime 'mysql:mysql-connector-java:5.1.20'
}

plugins {
    runtime ":hibernate:$grailsVersion"
    runtime ":jquery:1.8.0"
    runtime ":resources:1.1.6"
    //build ":nimble:0.4-SNAPSHOT"

    // Uncomment these (or add new ones) to enable additional resources capabilities
    //runtime ":zipped-resources:1.0"
    //runtime ":cached-resources:1.0"
    //runtime ":yui-minify-resources:0.1.4"

    build ":tomcat:$grailsVersion"

    runtime ":database-migration:1.1"

    compile ':cache:1.0.0'
}

}

那么为什么我的应用程序不知道灵活?我尝试了'clean'、'refresh-dependencies'、'compile',并以各种可能的组合重新启动,但无济于事。

我认为这一定与没有完全或正确地从 Grails 1.3.6 升级到 2.1.1 有关,但是什么?

谢谢你。

4

1 回答 1

1

从 1.3.6 更改为 2.1.1 是一大步。我在列表中读到并且现在可以想到的是:

  • 如果您的应用程序没有很多代码,最好创建一个新项目并复制您的源代码。
  • BuildConfig.groovy 是现在声明依赖的方式,使用它而不是 install-plugin (可能因为这个你的项目会发疯)

如果创建新项目和复制文件不是一个选项,请尝试小步骤(转到 grails 1.3.7,然后是 2.0.4,然后是 2.1.1)

于 2012-11-21T02:29:22.770 回答