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



我有一个gradle多项目(java)

根|-子A|-子B|-子C

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

但是所有的jar都是在subX/build/libs中产生的(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:除了某些需要最大灵活性的情况外,最好使用CopySync任务,而不是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
            }
        }
    }
}

最新更新