为什么Gradle没有找到' project()'子项目依赖项中的方法?

时间:2015-11-11 21:45:12

标签: groovy gradle

我既是Gradle newb又是Groovy newb。不幸的是,我不能单独学习它们。

错误:

Build file '/shave-and-a-haircut-two-bits/parentproject/childproject/build.gradle' line: 9

* What went wrong:
A problem occurred evaluating project ':commonstuff:services'.
> Could not find method project() for arguments [[org.apache.cxf:cxf-rt-frontend-jaxrs, ... 
DefaultExternalModuleDependency{group='org.codehaus.jettison', name='jettison', version='null', configuration='default'},
DefaultExternalModuleDependency{group='org.apache.cxf', name='cxf-rt-security', version='null', configuration='default'}]] on project ':commonstuff:services'.

因此,依赖项列表似乎正在工作,至少可供子项目使用。否则我怀疑我们会得到如此详细的抱怨。

子项目构建文件:

apply plugin: 'war'

description = 'services'
dependencies {
    ...        
    compile project(rootProject.ext.cxf)
    compile project(rootProject.ext.springframework)    
    ...

}

请注意使用Spring dependencyManagement插件以及在根项目中使用存储为属性的列表来管理依赖项组,包括CXF。没有指定版本,因为dependencyManagement应该处理...对吗?

Clue please?

1 个答案:

答案 0 :(得分:1)

实际上有两种方法,在Project API中称为 project 。一个接受String 路径,第二个覆盖第一个并接受Closure作为第二个参数。你实际传递的参数是List,所以没有与给定参数匹配的方法。似乎在这种特殊情况下:

compile (rootProject.ext.cxf)

将做你需要做的事。