我制作了一个带有任务的插件,该任务将使用 google 的 Reflections 库(此处)在类路径中搜索带有特定注释的类。但是,在使用插件并运行任务时,不会使用当前模块的类路径。如何让任务像在类路径上一样查看 jar 任务(来自 java 插件)的输出?
这是我的示例插件:
package com.myplugin;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
public class MyPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
project.getTasks().create("myplugintask", MyPluginTask.class);
}
}
我的任务代码:
package com.myplugin;
import lombok.Data;
import org.gradle.api.DefaultTask;
import org.gradle.api.tasks.TaskAction;
import org.reflections.Reflections;
public class MyPluginTask extends DefaultTask {
@TaskAction
public void reflect() {
Reflections reflections = new Reflections("com.consumer.reflected");
for (Class<?> clazz : reflections.getTypesAnnotatedWith(Data.class)) {
getLogger().info(clazz.toString());
}
}
}
我的消费项目有一个类:
package com.consumer.reflected;
import lombok.Data;
@Data
public class SomeClass {
}
我希望能够运行:
gradle myplugintask
并查看 SomeClass,但反射返回零结果。
注意:我尝试在消费者项目中实现插件(和任务)的实例化,并将其作为标准 jar 运行,并且成功(输出显示 SomeClass)