Gradle插件开发(Java代码):更新内部应用插件的扩展属性
我是Gradle插件开发的新手,我正在用Java(而不是Groovy)编写代码。 我的问题与此有些相似 我正在开发一个插件,它应用另一个插件,并试图通过定制一些配置来提供一个包装器。 应用的插件有几个扩展名,比如Gradle插件开发(Java代码):更新内部应用插件的扩展属性,gradle,plugins,gradle-plugin,Gradle,Plugins,Gradle Plugin,我是Gradle插件开发的新手,我正在用Java(而不是Groovy)编写代码。 我的问题与此有些相似 我正在开发一个插件,它应用另一个插件,并试图通过定制一些配置来提供一个包装器。 应用的插件有几个扩展名,比如dataExtension,dependencyCheck扩展名,我可以在build.gradle文件(配置)中为这些扩展名配置值 现在我想从我的自定义插件而不是build.gradle文件中配置这些值。所以我想在我的插件中重复使用dependencyCheck插件的这些扩展和配置值 以
dataExtension
,dependencyCheck
扩展名,我可以在build.gradle文件(配置)中为这些扩展名配置值
现在我想从我的自定义插件而不是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());
}
}
包lol;
导入org.gradle.api.Plugin;
导入org.gradle.api.Project;
导入org.owasp.dependencycheck.gradle.DependencyCheckPlugin;
导入org.owasp.dependencycheck.gradle.extension.DependencyCheckExtension;
公共类插件实现插件{
@凌驾
公开作废申请(项目){
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);
生命周期(“LOL{}”,dce.getAutoUpdate());
dce.setAutoUpdate(真);
生命周期(“LOL{}”,dce.getAutoUpdate());
}
}
这就是整个示例。我的答案解决了问题吗?设置自动更新很容易。但发现难以更新内部DataExtension(DependencyCheckExtension内的扩展名)。后来发现它可以使用ExtensionAware接口来完成。