发布多个子项目罐子我有一个gradle这个多项目(JAVA)在同一地点
ROOT | -subA | -subB | -subC
我成功地配置我的根版本。 gradle和gradle.settings来解决依赖关系并构建整个项目OK。
但随后所有广口瓶在SUBX生产/建造/库(其中X = A,B,C)
有一种方法在端部(与运行时资源也)重新集结一切 所以一切都是准备运送?
发布多个子项目罐子我有一个gradle这个多项目(JAVA)在同一地点
ROOT | -subA | -subB | -subC
我成功地配置我的根版本。 gradle和gradle.settings来解决依赖关系并构建整个项目OK。
但随后所有广口瓶在SUBX生产/建造/库(其中X = A,B,C)
有一种方法在端部(与运行时资源也)重新集结一切 所以一切都是准备运送?
您的解决方案也存在一些问题:任务依赖是不正确的,陈旧的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:除了某些情况下,需要极大的灵活性,这是更好地使用Copy
或Sync
任务比project.copy
方法。
发现的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
}
}
}
}
感谢您的帮助。我是Groovy DSL的新手,我并不完全理解某些命令的含义。我查看了“同步”任务规范,因此我理解“入”和“从”方法。但我还有一个问题:为什么我们使用Jar类型的任务来查找要同步的jar文件?如果我还想复制主要sourceSets资源,你会如何找到thoses文件? – facewindu
你为什么想要?它们被包含在罐子里。你的意思是第三方依赖? –
正确的是他们在罐子里:)谢谢 – facewindu