简体   繁体   中英

Unable to resolve class grails.plugin.cache.Cacheable after Grails update

I'm upgrading Grails from 2.1.0 to 2.3.7 . I have a Maven-based project. For 2.1.0 the command mvn clean install runs without error. For 2.3.7 it gives:

Compilation error: startup failed:
/home/freyja/fbc/fbc/search-web-app/grails-app/services/pl/psnc/dlteam/fbc2/services/CacheService.groovy: 4: unable to resolve class grails.plugin.cache.Cacheable
@ line 4, column 1.
import grails.plugin.cache.Cacheable
^

/home/freyja/fbc/fbc/search-web-app/grails-app/services/pl/psnc/dlteam/fbc2/services/CacheService.groovy: 3: unable to resolve class grails.plugin.cache.CachePut
@ line 3, column 1.
import grails.plugin.cache.CachePut
^

I tried newest version of Grails cache plugin - 1.1.1 and the one that worked ok with Grails 2.1.0 , which is cache 1.0.0 . The error is the same.

I checked how this file CacheService.groovy looks and it indeed has these two imports and appears to need them. I checked that cache plugin zip had been downloaded to .m2 folder.

I include cache plugin in pom.xml like this:

<dependency>
    <groupId>org.grails.plugins</groupId>
    <artifactId>cache</artifactId>
    <version>1.1.1</version>
    <scope>compile</scope>
    <type>zip</type>
</dependency>

When I run grails compile there also is no error and you can also run the application with grails run-app . But it would be nice to have it working in Maven, as it worked before. Could you please help me with this?

I have one additional question that maybe will allow me to understand what is happening: if I use Maven are dependencies in BuildConfig.groovy still important? Should I remove them? Because now we have two sets of dependencies to maintain in the project and it does not look like a proper thing.

Edit:

BuildConfig.groovy looks like this:

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.dependency.resolver = "maven" 
//grails.project.war.file = "target/${appName}-${appVersion}.war"

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

    def gebVersion = "0.7.2"

    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'
        compile 'org.tuckey:urlrewritefilter:4.0.3'
        compile 'commons-httpclient:commons-httpclient:3.1'
        compile 'org.apache.httpcomponents:httpclient:4.2.5'
        compile 'org.apache.solr:solr-solrj:4.3.0'
        test 'co.freeside:betamax:1.1.2'
        test "org.codehaus.geb:geb-spock:$gebVersion"

    }

    plugins {
        runtime ":hibernate:3.6.10.12"
        runtime ":jquery:1.11.0.1"
        runtime ":resources:1.1.6"
        test ":spock:0.7"
        test ":geb:$gebVersion"

        // 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:7.0.52.1"

        runtime ":database-migration:1.3.8"

        compile ':cache:1.1.1'
    }
}

grails.war.resources = {stagingDir ->
    delete(dir: "${stagingDir}/WEB-INF/classes/pl/psnc/dlteam/fbc2/utils/iso693_2")
}

But is it used at all for maven build? If so, why do I have to include plugins in pom.xml ?. This redundancy bothers me.

BuildConfig.groovy

put this line

dependencies {
        compile "net.sf.ehcache:ehcache-core:2.4.6"

    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM