Gradle 插件开发(Java 代码):更新内部应用插件的扩展属性
Gradle Plugin Development (Java code): Update extension properties for Internal applied Plugin
我是 Gradle 插件开发的新手,我正在 Java(而不是 Groovy)中编写代码。
我的问题有点类似于这个。
我正在开发一个应用另一个 plugin 的插件,并尝试通过自定义一些配置来提供包装器。
应用的插件有一些扩展名,例如 dataExtension
、dependencyCheck
扩展名,我可以在 build.gradle 文件中配置值(sample 配置)。
现在我想从我的自定义插件而不是 build.gradle 文件配置这些值。所以我想在我的插件中重新使用 dependencyCheck 插件的这些扩展和配置值
我在以编程方式应用插件后尝试了以下操作:
直接使用插件的属性:
DependencyCheckPlugin p = project.getPlugins.apply(DependencyCheckPlugin.class)
p.setProperty("dependencyCheck.outputDirectory", project.getBuildDir());
这没有按预期工作。
直接给项目设置属性
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);
我收到错误消息,指出在此项目中找不到扩展。
关于如何从外部插件配置内部插件有什么建议吗?
我是这样实现的:
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就是整个例子。
我是 Gradle 插件开发的新手,我正在 Java(而不是 Groovy)中编写代码。
我的问题有点类似于这个
我正在开发一个应用另一个 plugin 的插件,并尝试通过自定义一些配置来提供包装器。
应用的插件有一些扩展名,例如 dataExtension
、dependencyCheck
扩展名,我可以在 build.gradle 文件中配置值(sample 配置)。
现在我想从我的自定义插件而不是 build.gradle 文件配置这些值。所以我想在我的插件中重新使用 dependencyCheck 插件的这些扩展和配置值
我在以编程方式应用插件后尝试了以下操作:
直接使用插件的属性:
DependencyCheckPlugin p = project.getPlugins.apply(DependencyCheckPlugin.class) p.setProperty("dependencyCheck.outputDirectory", project.getBuildDir());
这没有按预期工作。
直接给项目设置属性
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);
我收到错误消息,指出在此项目中找不到扩展。
关于如何从外部插件配置内部插件有什么建议吗?
我是这样实现的:
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就是整个例子。