如何设置gradle任务的动态输入依赖性

时间:2015-03-16 17:49:40

标签: gradle

我正在使用Gradle插件,该插件的任务是生成可编译的Java源代码。它需要代码生成器的输入a" static" directory(属性值),它应包含特殊语言的文件(使用特定范围)。此外,如果将特定配置属性设置为true,它还将在整个类路径中搜索具有相同范围的文件(或者更好,在特定配置中)。

如果任何输入依赖项是新的,我想确保该任务运行。

将@InputDirectory添加到" static"的属性定义中非常容易。位置,但我不确定如何处理"动态"输入依赖。

我有一个属性,用于定义用于搜索具有该范围的其他文件的配置名称。我们称之为" searchConfiguration"。此属性是可选的。如果没有设置,它将使用" compile"。我还有一个属性,指定我们是否会首先搜索其他文件。我们称之为" inspectDependencies"。

我想我可以写一个@Input-annotated方法,它基本上返回" configurations.searchConfiguration.files"名单。我们称之为" getDependencies"。我认为这是基本的想法。但是,我不明白该怎么做" inspectDependencies"。我可以轻松地制作" getDependencies"如果" inspectDependencies"返回一个空列表是假的,但这是真的正确的事吗?似乎有人改变了" inspectDependencies"来自" true"到"假"在构建之后,下一个构建应该再次运行该任务。

1 个答案:

答案 0 :(得分:0)

嗯,这是暂定的,但我在Gradle论坛上询问了这个问题,Mark Viera说服我确实应该这么简单,尽管它需要@InputFiles而不是@Input。我的特定方法如下所示:

@InputFiles
def getOptionalYangClasspath() {
    return inspectDependencies ? project.configurations[yangFilesConfiguration] : Collections.emptyList() 
}