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