gpt4 book ai didi

gradle - 将属性添加到JavaPlugin的SourceSet中,Gradle

转载 作者:行者123 更新时间:2023-12-03 03:06:12 28 4
gpt4 key购买 nike

我们正在尝试草拟自定义Gradle插件以与我们的建模语言Umple一起使用。我们希望使其尽可能“符合人体工程学”,并允许在“sourceSet”级别指定属性。

例如,

sourceSets {
main {
umple {
foo = 'bar'
}
}
}

umple { // defaults
foo = 'baz'
}

我们尝试将扩展添加到源集,并尝试根据Scala和Antlr插件的工作原理对方法进行建模。但是,我们无法弄清楚如何向sourceSet闭包应用程序添加额外的属性。任何帮助表示赞赏。

最佳答案

// TODO: take inspiration from https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/java/org/gradle/api/tasks/GroovySourceSet.java
public interface UmpleSourceSet {
SourceDirectorySet getUmple();
UmpleSourceSet umple(Closure configureClosure);
UmpleSourceSet umple(Action<? super SourceDirectorySet> configureAction);
SourceDirectorySet getAllUmple();
}

// TODO: take inspiration from https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/java/org/gradle/api/internal/tasks/DefaultGroovySourceSet.java
public class DefaultUmpleSourceSet implements UmpleSourceSet { ... }

// TODO: take inspiration from https://github.com/gradle/gradle/blob/89b1c11a160c5f597c6c1ca50f01cf57e43c8356/subprojects/plugins/src/main/java/org/gradle/api/plugins/GroovyBasePlugin.java#L88
public class UmplePlugin implements Plugin<Project> {
private final SourceDirectorySetFactory sourceDirectorySetFactory;

@Inject
public UmplePlugin(SourceDirectorySetFactory sourceDirectorySetFactory) {
this.sourceDirectorySetFactory = sourceDirectorySetFactory;
}

public void apply(Project project) {
project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().all(new Action<SourceSet>() {
public void execute(SourceSet sourceSet) {
DefaultUmpleSourceSet umpleSourceSet = new DefaultUmpleSourceSet(((DefaultSourceSet) sourceSet).getDisplayName(), sourceDirectorySetFactory);
new DslObject(sourceSet).getConvention().getPlugins().put("umple", umpleSourceSet);

umpleSourceSet.getUmple().srcDir("src/" + sourceSet.getName() + "/umple");
}
}
}
}

关于gradle - 将属性添加到JavaPlugin的SourceSet中,Gradle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42912317/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com