Gradle 在渐变任务中动态解析依赖项
我正在尝试构建一个gradle插件,它可以实现以下功能:Gradle 在渐变任务中动态解析依赖项,gradle,Gradle,我正在尝试构建一个gradle插件,它可以实现以下功能: @TaskAction void installAppserver() { Dependency dependency = new DefaultExternalModuleDependency(group,name,version) Configuration configuration = project.configurations.detachedConfiguration(dependency) configurat
@TaskAction
void installAppserver() {
Dependency dependency = new DefaultExternalModuleDependency(group,name,version)
Configuration configuration = project.configurations.detachedConfiguration(dependency)
configuration.setTransitive(false)
configuration.files.each { file ->
if (file.isFile() && file.name.endsWith('.zip')) {
println 'Attempting to unzip: ' + file + ' into folder: ' + appServerFolder
new Copy().from(project.zipTree(file)).into(appServerFolder).execute()
}
}
}
@TaskAction
void installAppserver() {
Dependency dependency = new DefaultExternalModuleDependency(group,name,version)
Configuration configuration = project.configurations.detachedConfiguration(dependency)
configuration.setTransitive(false)
configuration.files.each { file ->
if (file.isFile() && file.name.endsWith('.zip')) {
println 'Attempting to unzip: ' + file + ' into folder: ' + appServerFolder
new Copy().from(project.zipTree(file)).into(appServerFolder).execute()
}
}
}
问题是实际的工件没有得到解决 任务无法配置构建模型(插件就是这么做的)。可以在任务中创建并解析分离的配置。如果这不起作用,则任务的代码或它试图解决的依赖关系可能存在问题。请注意,只有定义了正确的存储库,才能解析依赖关系
应该使用
project.dependencies.create()
而不是new detaulttexternalmoduledependency()
(这是一个内部类)。不应使用project.Copy().execute()
(Task#execute
)而应使用project.Copy
。否。不走运。当我在调试模式下运行代码时,我注意到存储库是存在的;使用正确的存储库查找依赖项;TransientConfigurationBuilder说它已经加载了“已解析的配置结果”,然后它就停止了!我不知道现在如何调试这个。有什么想法吗?不知道所有细节就说不出来。这不是一个普遍的问题,因为许多现有任务已经完成了与您尝试完成的任务相同的任务。也许可以看看Gradle代码库中的代码质量插件。我正在调试代码,注意到在我尝试动态解析配置时从未调用“DefaultModuleDescriptor.addArtifact()”方法。没关系。。发现我的错误。。没有指定文件扩展名。另一方面,我仍然将此标记为一个答案,因为这次讨论帮助我清理了我的插件并找到了正确的位置。谢谢你,彼得。