在同一位置发布多个子项目jar

时间:2014-02-25 15:40:22

标签: java gradle

我有一个gradle多项目(java)

ROOT | -subA | -subB | -subC

我成功配置了我的root build.gradle和gradle.settings以解决依赖关系并构建整个项目OK。

但是所有的罐子都是在subX / build / libs中产生的(X = A,B,C)

有没有办法在最后重新组合所有内容(还有运行时资源) 所以一切都准备好了吗?

2 个答案:

答案 0 :(得分: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方法。

答案 1 :(得分: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
            }
        }
    }
}