我在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时,它会失败,抱怨“无法获得customProperty类型的根项目'another_project‘的未知属性”。
我正在创建在主插件类中应用的方法中的属性。我尝试了以下三种方法:
// 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);
}
}发布于 2018-10-28 06:46:37
要为Gradle插件创建扩展,需要用字段创建POJO类:
class YourExtension {
String customProperty
}然后在插件类中创建扩展:
public class CustomPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
project.getExtensions().create("extensionName", YourExtension.class);
}
}现在可以在build.gradle文件中使用扩展名:
extensionName {
customProperty = "value"
}https://stackoverflow.com/questions/53022345
复制相似问题