gradle multiproject:避免在未检测到源代码更改时发布模块

gradle multiproject:避免在未检测到源代码更改时发布模块,gradle,multi-project,Gradle,Multi Project,我有一个包含以下子项目的多项目gradle构建: 示例api 依赖于样例api的样例公用程序 依赖于示例api和示例公用程序的示例服务器 如果源代码自上一版本以来没有更改(svn diff),我希望避免构建/发布sample-api.jar、sample-common.jar或sample-server.ear。 sample-api.jar和sample-common.jar将被外部客户机使用,我希望避免不必要的构建/发布,比如nexus repo。 整个项目是由詹金斯公司的格拉德共同完成的

我有一个包含以下子项目的多项目gradle构建: 示例api 依赖于样例api的样例公用程序 依赖于示例api和示例公用程序的示例服务器

如果源代码自上一版本以来没有更改(svn diff),我希望避免构建/发布sample-api.jar、sample-common.jar或sample-server.ear。 sample-api.jar和sample-common.jar将被外部客户机使用,我希望避免不必要的构建/发布,比如nexus repo。 整个项目是由詹金斯公司的格拉德共同完成的

目前,我知道如何在样例api源代码没有更改的情况下使样例变得通用依赖于sample-api.jar,否则依赖于样例api项目。但如果样例api和样例common没有变化,我也需要避免样例common构建;与sample server相同-如果sample api+sample Ocmon+sample server中没有任何更改,则不会生成。我想要它递归

这个问题一定有一个标准的解决方案


谢谢。

我不清楚您想解决哪个问题。您需要更详细地解释(具体的代码/示例有帮助)。另外,请修改标题(太笼统了)。构建是自动避免的,尽管是在每个任务级别上。目前没有一种简单的方法可以避免发布,因为这是一个更难的问题,取决于您如何管理版本号等。您通常希望的是,永远不要尝试发布以前发布过的内容(而不仅仅是在同一个框上的上一版本没有更改的情况下避免发布)。Nexus也不会让你发布两次相同的版本。不同的人对“避免重新发布”有不同的要求,并且没有简单/标准的解决方案。如果
install
中的工件是最新的,它们将不会被再次复制。对于安装目录,您通常希望使用
Sync
而不是
Copy
,以防止文件过时。不要每次删除工作区,或者使用多个单项目生成和多个生成作业,而不是单个多项目生成和生成作业。