我是Gradle插件开发的新手,我用Java编写代码(不是Groovy)。 我的问题有点类似于thread。
我正在开发一个插件,它应用另一个plugin并尝试通过自定义少量配置来提供包装器。
应用的插件具有很少的扩展名,例如dependencyCheck
,DependencyCheckPlugin p = project.getPlugins.apply(DependencyCheckPlugin.class)
p.setProperty("dependencyCheck.outputDirectory", project.getBuildDir());
扩展名,我可以在build.gradle文件中配置值(sample配置)。
现在我想从我的自定义插件而不是build.gradle文件配置这些值。所以我想在我的插件
中重用dependencyCheck插件的这些扩展和配置值我以编程方式应用插件后尝试了以下操作:
直接使用插件的属性:
DependencyCheckPlugin p = project.getPlugins.apply(DependencyCheckPlugin.class)
project.setProperty("dependencyCheck.outputDirectory", project.getBuildDir());`
这不能按预期工作。
直接将属性设置为项目
dependencyCheck.outputDirectory
我收到错误消息项目没有属性DependencyCheckExtension depExtn = (DependencyCheckExtension)project.getExtensions().getByType(DependencyCheckExtension.class);
depExtn.setAutoUpdate(false);
depExtn.setOutputDirectory(extn.getOutputdir());
depExtn.setFormat(ReportGenerator.Format.ALL);
。
尝试获取已应用插件的扩展并设置属性
distinctUntilChange
我收到错误消息,指出在此项目中找不到扩展程序。
有关如何从外部插件配置内部插件的任何建议吗?
答案 0 :(得分:2)
我已按以下方式实施:
package lol;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.owasp.dependencycheck.gradle.DependencyCheckPlugin;
import org.owasp.dependencycheck.gradle.extension.DependencyCheckExtension;
public class LolPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
final DependencyCheckPlugin dcp = project.getPlugins().apply(DependencyCheckPlugin.class);
project.getLogger().lifecycle("LOL {}", dcp);
final DependencyCheckExtension dce = (DependencyCheckExtension) project.getExtensions().findByName("dependencyCheck");
project.getLogger().lifecycle("LOL {}", dce);
project.getLogger().lifecycle("LOL {}", dce.getAutoUpdate());
dce.setAutoUpdate(true);
project.getLogger().lifecycle("LOL {}", dce.getAutoUpdate());
}
}
Here就是整个例子。