我在项目中使用了两个gradle插件:
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath 'pluginA:1'
classpath 'pluginB:1'
}
}
apply plugin: 'pluginA'
apply plugin: 'pluginB'
pluginA和pluginB都依赖于xerces但是在不兼容的版本中...... 问题是pluginA的执行失败,因为使用了错误版本的xerces。
是否可以分离用于每个插件任务执行的类路径(每个插件在执行其中一个任务时只有自己的类路径)?
答案 0 :(得分:0)
您可以使用ClassLoadersPlugin from here之类的内容根据不同的配置为您的任务创建不同的类加载器,然后根据这些配置指定依赖项。不确定这是否扩展到插件方案,但它可能,因为插件只是创建任务,可能最终运行它们将使用不同的类加载器。
或者apply method takes a map,您可以指定它所应用的对象,这样就不会在同一个项目对象上完成所有操作。
编辑: 另一种途径可能是在Excluding transitive dependencies中详细说明排除依赖关系,并创建专门包含两个xerces库的配置,并基于这些配置来执行这些配置,这看起来更多" OOTB&#34 ;