Gradle插件,必须从项目中加载已编译的类
作为为编写Gradle插件的一部分,我们在处理Java迁移时遇到了一个问题Gradle插件,必须从项目中加载已编译的类,gradle,Gradle,作为为编写Gradle插件的一部分,我们在处理Java迁移时遇到了一个问题 在项目编译类的类路径上提供Gradle插件访问权限的最佳方式是什么,以便加载和执行它们?因此,我们有一个插件,它添加了一个任务,希望执行插件应用到的项目中包含的代码。在这种情况下,任务(类)应该具有类型为Iterable的输入属性,该属性(由插件)使用要执行的代码的类路径进行配置(例如sourceset.main.runtimeClasspath)。然后,任务可以选择以下方式来执行代码: 该任务使用project.ja
在项目编译类的类路径上提供Gradle插件访问权限的最佳方式是什么,以便加载和执行它们?因此,我们有一个插件,它添加了一个任务,希望执行插件应用到的项目中包含的代码。在这种情况下,任务(类)应该具有类型为
Iterable
的输入属性,该属性(由插件)使用要执行的代码的类路径进行配置(例如sourceset.main.runtimeClasspath
)。然后,任务可以选择以下方式来执行代码:
- 该任务使用
在单独的JVM中执行代码。如果代码不是直接可执行的,任务可能需要将一些引导代码注入project.javaexec{}
类路径。使用javaexec
的一个潜在替代方法是首先使用project.javaexec
任务javaexec
- 该任务创建一个新的类加载器,用类路径填充它,加载和实例化充当API入口点的类,并在适当时使用它们。如果任务是用Groovy编写的,那么它可以利用duck类型,并且除了创建入口点之外,不需要反射代码