如何在飞行中编写依赖列表

时间:2015-02-15 00:02:50

标签: groovy gradle

我偶尔会从第三方获取代码丢弃作为jar文件的zip文件,我需要将其用作依赖项。 我想将jar解压缩到flatDir存储库并自动更新dependencies.gradle文件。我可以解压缩得很好,写入文件是棘手的。

让我们举一个使用开源库的例子:

如果dependencies.gradle最初看起来像这样:

repositories {
    flatDir {
        dirs 'lib'
    }
}
dependencies {
  compile 'commons-codec:1.2'
  compile 'commons-logging:1.2'
  compile 'log4j:1.2.17'
}

然后一个Zip文件到达,包含commons-codec-1.10.jar,commons-logging-1.2.jar和guava-18.0.jar。 dependencies.gradle必须更新为:

repositories {
    flatDir {
        dirs 'lib'
    }
}
dependencies {
  compile 'commons-codec:1.10'
  compile 'commons-logging:1.2'
  compile 'log4j:1.2.17'
  compile 'guava:18.0'
}

我想拥有特定的版本而不只是整个flatDir,因为flatDir中可能有相同库的不同版本。

我无法使用普通过滤,因为@符号不会出现在文件中。

面临的挑战是识别依赖关系何时已存在且需要更新,何时存在依赖关系且不需要更新以及依赖关系不存在且需要添加时。

我正在使用带有zipTree的复制任务来解压缩,所以我的想法是使用带有闭包的eachFile来完成工作。但是,我不太确定如何执行上段所述的步骤。

0 个答案:

没有答案