2017-03-07 91 views
0

我有一个多项目,看起来像这样的时候“找不到项目属性”:摇篮错误味精出口属性

main-web-app 
\- web-app-1 
\- web-app-2 

每个模块都有它的build.gradle文件。我需要生成一个main-web-app.war(实际上,一个战争爆炸的目录)将包含来自子模块的所有内容。

所以每个子模块的build.gradle的是这样的:

apply plugin: 'war' 
//... 
task explodedWar(type: Copy) { 
    project.ext.buildExplodedDir = "$buildDir/webapps/web-app-1" 
    into "$buildDir/webapps/web-app-1" 
    with war 
} 
war.dependsOn explodedWar 

和主web应用的build.gradle(和这里的问题)应该是这个样子:

war { 
    from fileTree(project(':web-app-1').buildExplodedDir) 
    from fileTree(project(':web-app-2').buildExplodedDir) 
} 

但后来我收到此错误信息:

Could not find property 'buildExplodedDir' on project ':web-app-1' 

什么是使我的父项目找到什么是“buildExplodedDir”的正确方法?

回答

0
apply plugin: 'war' 
//... 
task explodedWar(type: Copy) { 
    if (!rootProject.hasProperty('buildExplodedDir')) { 
     rootProject.ext.buildExplodedDir = [] 
    } 
    rootProject.ext.buildExplodedDir << "$buildDir/webapps/web-app-1" 

    into "$buildDir/webapps/web-app-1" 
    with war 
} 
war.dependsOn explodedWar 

您可能还需要先告诉gradle先解析子模块。所以在你的父gradle文件中只需添加如下内容

project.evaluationDependsOnChildren()