【发布时间】:2024-05-02 06:50:02
【问题描述】:
我在 Java 中创建了一个简单的独立 Gradle 插件,并在 GitHub 上创建了一个 Maven 存储库,用于发布该插件。除了检索插件应该可用的项目属性外,一切正常。当我在另一个 Gradle 项目中应用该插件时,它找不到这些属性。
仅当插件从 GitHub 上的远程存储库加载时才会发生。从本地存储库加载时,它可以工作。插件实现是否可以以某种方式设置为甚至从远程存储库提供属性?或者这是不能被黑客入侵的 GitHub 功能?
详情如下:
我在另一个项目中的build.gradle 看起来像这样:
buildscript {
repositories {
maven {
url "GITHUB_REPO_URL"
}
}
dependencies {
classpath "custom_plugin_group:custom_plugin:1.0"
}
}
apply plugin: "custom_plugin"
task propertyTest {
doLast {
println project.customProperty
}
}
当我尝试运行任务 propertyTest 时,它失败并抱怨“无法为 org.gradle.api.Project 类型的根项目 'another_project' 获取未知属性 'customProperty'。”
我正在主插件类的方法 apply 中创建属性。我尝试了以下三种方法:
// First approach - adding a simple value to extensions
public class CustomPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
project.getExtensions().add("customProperty", "Custom property value");
}
}
// Second approach - setting extra property to extensions
public class CustomPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
project.getExtensions().getExtraProperties().set("customProperty", "Custom property value");
}
}
// Third approach - adding a property instance to extensions
public class CustomPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
Property<String> customProperty = project.getObjects().property(String.class);
customProperty.set("Custom property value");
project.getExtensions().add("customProperty ", customProperty);
}
}
【问题讨论】:
标签: github gradle plugins properties