2013-07-11 50 views
1

调用uploadArchives为了释放我的系统,我创建了许多其他项目的要求uploadArchives一个释放器项目。摇篮发布系统任务 - 对子项目

在我的项目,我有以下文件:

settings.gradle

include '../proj-a', '../proj-b' 

的build.gradle

task releaseSystem() { 
    // what goes here? 
} 

应该采取什么releaseSystem任务的内容是这样我可以拨打gradle releaseSystem并让它运行uploadArchives我的每个子项目?

我已经尝试了多种选择,但没有成功迄今。

感谢您能提供任何见解。

ANSWER

我与优雅的解决方案,提供的gradle我的问题不断深刻的印象。这是我的最终解决方案(如彼得指出,下同):

settings.gradle

include 'proj-a', 'proj-b' 
project (':proj-a').projectDir = new File(settingsDir, '../proj-a') 
project (':proj-b').projectDir = new File(settingsDir, '../proj-b') 

的build.gradle

task releaseSystem() { 
    dependsOn { 
     [ 
      subprojects.build, 
      subprojects.uploadArchives 
     ] 
    } 
} 

注意,既然我的仓库是Maven仓库当我最初包括“../proj-a”在我settings.gradle,它产生与artifactId的../proj-a劲歌这是无效的。我必须将我的settings.gradle更改为上述系统的格式,以便正确地将poms放在一起,并成功完成uploadArchives任务。

回答

2

假设所有子项目有uploadArchives任务:

task releaseSystem { 
    dependsOn { subprojects.uploadArchives } 
} 

注意,这将无法运行的子项目测试。

+0

我和gradle这个怎么优美的不断深刻的印象。谢谢你的答案。在我的情况下还有一个问题。我的仓库是maven仓库,所以当以这种方式运行时,它会创建无效的pom文件,因为artifactId具有“../”进行处理。任何方式在这个? – dev

+0

我通过使用projectDir设置找到了解决此问题的方法。将更新上面的问题。再次感谢 – dev