Grails更新后无法解析类grails.plugin.cache.Cacheable

时间:2014-04-17 12:20:12

标签: maven grails grails-cache

我将Grails从2.1.0升级到2.3.7。我有一个基于Maven的项目。对于2.1.0,命令mvn clean install运行时没有错误。对于2.3.7,它会给出:

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
^

我尝试了最新版本的Grails cache插件 - 1.1.1以及与Grails 2.1.0配合使用的版本cache 1.0.0CacheService.groovy错误是一样的。

我检查了这个文件cache的外观,它确实有这两个导入,似乎需要它们。我检查了.m2插件zip已下载到cache文件夹。

我在pom.xml中添加<dependency> <groupId>org.grails.plugins</groupId> <artifactId>cache</artifactId> <version>1.1.1</version> <scope>compile</scope> <type>zip</type> </dependency> 插件,如下所示:

grails compile

当我运行grails run-app时,也没有错误,您也可以使用BuildConfig.groovy运行该应用程序。但是,让它在Maven工作会很好,就像以前一样。你能帮帮我吗?

我还有一个问题可能会让我理解发生了什么:如果我使用Maven,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.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") } 看起来像这样:

pom.xml

但它是否完全用于maven构建?如果是这样,为什么我必须在{{1}}中包含插件?这种冗余困扰着我。

1 个答案:

答案 0 :(得分:0)

BuildConfig.groovy

把这一行

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

    }