Я создал простой автономный плагин Gradle на Java и репозиторий Maven на GitHub для публикации плагина.Все работает отлично, кроме получения свойств проекта, которые должны быть доступны с плагином.Когда я применяю плагин в другом проекте 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 »типа org.gradle.api.Project. "
Я создаю свойство в методе 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);
}
}