2014-11-13 37 views
2
我使用两个插件的gradle项目中的

之间的类路径冲突:避免依赖性/摇篮插件

buildscript { 
    repositories { 
     jcenter() 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'pluginA:1' 
     classpath 'pluginB:1' 
    } 
} 

apply plugin: 'pluginA' 
apply plugin: 'pluginB' 

两个pluginA和pluginB依赖于Xerces的,但在未对应的版本... 问题是的执行由于使用错误版本的xerces,插件A失败。

是否有可能用于每个插件执行任务(每个插件其任务之一的执行过程中只有其自己的类路径)的类路径分开?

回答

0

你也许能够使用的东西像ClassLoadersPlugin from here为根据不同的配置您的任务创建不同的类加载器,然后指定你的依赖对那些配置。不知道这是否延伸到插件场景,但它可能,因为插件只是创建任务,可能最终运行它们会使用不同的类加载器。

另外的apply method takes a map,你可以指定哪些对象是正在申请,这样不是一切都在同一个项目对象上完成的。

编辑: 另一种途径,可能是看不计的依赖在Excluding transitive dependencies详细和创建配置,具体包括两个Xerces的库,和基础的任务流掉这些配置,这似乎更“开箱即用”。