2014-02-25 85 views
0

发布多个子项目罐子我有一个gradle这个多项目(JAVA)在同一地点

ROOT | -subA | -subB | -subC

我成功地配置我的根版本。 gradle和gradle.settings来解决依赖关系并构建整个项目OK。

但随后所有广口瓶在SUBX生产/建造/库(其中X = A,B,C)

有一种方法在端部(与运行时资源也)重新集结一切 所以一切都是准备运送?

回答

1

您的解决方案也存在一些问题:任务依赖是不正确的,陈旧的Jar文件不会被删除,并且不能保证所有Jar任务将被找到。 (后者可以通过使用project.tasks.withType(Jar).all,而不是.each是固定的。)下面是一个更准确的解决方案:

task deploy(type: Sync) { 
    into "$buildDir/deploy" 
    for (subproject in subprojects) { 
     from subproject.tasks.withType(Jar) 
    } 
} 

PS:除了某些情况下,需要极大的灵活性,这是更好地使用CopySync任务比project.copy方法。

+0

感谢您的帮助。我是Groovy DSL的新手,我并不完全理解某些命令的含义。我查看了“同步”任务规范,因此我理解“入”和“从”方法。但我还有一个问题:为什么我们使用Jar类型的任务来查找要同步的jar文件?如果我还想复制主要sourceSets资源,你会如何找到thoses文件? – facewindu

+0

你为什么想要?它们被包含在罐子里。你的意思是第三方依赖? –

+0

正确的是他们在罐子里:)谢谢 – facewindu

0

发现的gradle这个联机帮助中的答案(虽然它在某种程度上不是真的标记找到它)

task deploy(dependsOn: assemble) << { 
    File deployDist = mkdir("$buildDir/deploy") 
    subprojects.each {project -> 
     project.tasks.withType(Jar).each {archiveTask -> 
      copy { 
       from archiveTask.archivePath 
       into deployDist 
      } 
     } 
    } 
}