我正在尝试使用Gradle来管理非Java项目中的依赖项。我们的想法是拥有一个单独的通用插件,它与项目的gradle.build文件一起将项目所需的任何依赖项带入项目,将每个依赖项放在项目期望文件驻留的位置。目前,它正在将它们全部放在项目的/ libs /文件夹中,但这还不够。我希望能够做的是在gradle.build文件中指定将依赖项放在项目中的位置。
这是一个简单的例子:我有一个项目已经使用多年作为其他项目的组件。当核心组件代码更新时更新所有项目真是太痛苦了......每个项目存储库都必须提交新文件(特别是使用SVN)。这些文件必须驻留在特定目录中,以便ColdFusion框架(FW / 1)与代码正确交互。
所以已经做的是核心组件现在在Artifactory中,而gradle.build文件将其拉入项目中。如果它是唯一的依赖项,那将是故事的结束,但还有其他需要被删除,并且代码期望那些与那个组件位于不同的目录中。每个项目都有不同的依赖关系,并且可能有不同的文件结构(例如,我们的旧应用程序正在使用Fusebox框架)。因此,能够控制gradle.build文件中指定的依赖关系的位置是我所追求的。
这是我希望能够做到的:
dependencies {
// exploded is a configuration that is added to this plugin
exploded('com.foo:bar:2.0-SNAPSHOT@zip') {
ext {
moveWhat = ['app']
moveWhere = 'assets'
}
}
exploded('com.foo2:bar2:1.0-SNAPSHOT@zip') {
ext {
moveWhat = ['*']
moveWhere = 'lib'
}
}
...
希望我可以将目录/文件传递给moveWhat,然后将其放入moveWhere指定的目录中,但是我无法弄清楚如何将属性与每个依赖关系联系起来。我无法弄清楚这是否可能。
有人能指出我正确的方向吗?
答案 0 :(得分:0)
我建议您使用单独的任务从配置中提取所需内容。像这样:
task copyFromExploded(type: Copy) {
into new File(project.buildDir, "assets")
from (configurations.exploded)
include "**/app"
}