代码之家  ›  专栏  ›  技术社区  ›  Siva

Gradle插件开发(Java代码):更新内部应用插件的扩展属性

  •  1
  • Siva  · 技术社区  · 7 年前

    我是Gradle插件开发新手,我正在用Java(而不是Groovy)编写代码。 thread .

    plugin 并试图通过定制一些配置来提供包装器。 dataExtension , dependencyCheck 我可以在构建中为其配置值的扩展。gradle文件( sample 配置)。

    在以编程方式应用插件后,我尝试了以下操作:

    1. DependencyCheckPlugin p = project.getPlugins.apply(DependencyCheckPlugin.class)
      p.setProperty("dependencyCheck.outputDirectory", project.getBuildDir());
      

    1. 直接将属性设置为项目

      DependencyCheckPlugin p = project.getPlugins.apply(DependencyCheckPlugin.class)
      project.setProperty("dependencyCheck.outputDirectory", project.getBuildDir());`
      

    dependencyCheck.outputDirectory .

    1. 尝试获取应用插件的扩展并设置属性

      DependencyCheckExtension depExtn = (DependencyCheckExtension)project.getExtensions().getByType(DependencyCheckExtension.class);
      depExtn.setAutoUpdate(false);
      depExtn.setOutputDirectory(extn.getOutputdir());
      depExtn.setFormat(ReportGenerator.Format.ALL);
      

    我收到错误消息,说在这个项目中找不到扩展。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Opal    7 年前

    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