在我的插件,我称之为静态引导方法MutationCoverageReport.main(arg)
由这是我的一个插件的依赖编译库。 我想,以允许插件用户改变库的版本应该使用(假定所选择的版本具有兼容API)。
我会建议使用排除从我的插件传递依赖和手动添加依赖到库中所要求的版本buildscript.dependencies.classpath在他的build.gradle,但是这是不是很优雅:
buildscript {
(...)
dependencies {
classpath('info.solidsoft.gradle.pitest:gradle-pitest-plugin:0.32.0') {
exclude(group: 'org.pitest')
}
classpath 'org.pitest:pitest-command-line:0.33'
}
}
我希望能够利用中的libversion参数在我的配置倒闭,但我有一些问题两种方案我试过了。
1.
我需要从我的插件(原始库版本和它的依赖)删除传递依赖和要求的版本(从配置闭合)添加库作为buildscript依赖。
在afterEvaluate它是晚期(配置解决)和我有问题与beforeEvaluate成功挂钩(是否触发单个模块的项目?)。
2.
我可以改变它用于从库中执行一个静态方法的类路径。
要做到这一点,我可以创建一个自定义的类装载器这将委托给父类加载器之前使用我的类库(在请求的版本)。 我也不得不更换一个内胆采用MutationCoverageReport.main(arg)
使用新的类加载器的反射调用。
也许还有一个更简单修改通过插件类路径与所提到的方法将被调用的方法?
主要的问题 。 什么是允许插件用户定义的插件执行库的版本最好的方法是什么?