作为为Flyway编写 Gradle 插件的一部分,我们在处理 Java 迁移时偶然发现了一个问题。
在其类路径上为项目的已编译类提供 Gradle 插件访问权限以便它可以加载和执行它们的最佳方法是什么?
所以情况是我们有一个插件,它添加了一个任务,该任务想要执行该插件所应用的项目中包含的代码。在这种情况下,任务(类)应该有一个类型的输入属性,Iterable<File>
该属性(由插件)使用要执行的代码的类路径(例如sourceSets.main.runtimeClasspath
)进行配置。然后,该任务可以选择以下方式来执行代码:
project.javaexec {}
在单独的 JVM 中执行代码。如果代码不能直接执行,则任务可能需要将一些引导代码注入到javaexec
类路径中。使用的潜在替代方法project.javaexec
是首先使用JavaExec
任务。