我偶尔会从第三方获取代码丢弃作为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来完成工作。但是,我不太确定如何执行上段所述的步骤。