Установить свойство на контейнер Gradle - PullRequest
0 голосов
/ 21 декабря 2018

Привет, ребята, у меня есть 5 проектов в моем монорепо, и я пытаюсь разделить задачу между ними.Я почти достиг того, чего хочу, но у меня проблемы с установкой переменной dirPath для каждого проекта.Ниже artifactUploads.gradle, который содержит мой customPlugin и задачу

    task copyReleaseBuilds() {
    println "test log"
    doLast {
         //stuff
                }.assertNormalExitValue()
            }
        }
    }
}

class UploadPlugin implements Plugin<Project> {
    void apply(Project project) {
        println "UploadPlugin entry"
        //Create container instance for config object
        NamedDomainObjectContainer<Config> configContainer =
                project.container(Config)

        project.extensions.add('uploadConfigs', configContainer)
        project.task('uploadTask') << {
            def uploadConfig = project.extensions.getByName('uploadConfigs')
            println uploadConfig
            //Prints DirName
            println uploadConfig
            uploadConfig.all{
                println "{$uploadConfigs.dirPath}"
            }
        }
    }
}

class Config{
    String dirPath

    Config(String dirPath){
        this.dirPath = dirPath
    }
}



//uploadConfigs {
//        dirPath = ""
//}

Каждое приложение build.gradle имеет эту строку с различными значениями для dirPath

uploadConfigs{
    dirPath = "hca/"

}

Я продолжаю получать эту ошибку, когда я пытаюсь построить

Could not set unknown property 'dirPath' for Config container of type org.gradle.api.internal.FactoryNamedDomainObjectContainer.

У меня проблемы с пониманием этого.У меня это работало, когда у моего класса Config также была переменная имени, такая как

class Config{
String name
String dirPath


Config(String name){
    this.name = name
}

}

Тогда соответственно в каждом build.gradle

    uploadConfigs{

    Nch{
        dirPath = "nchmc/"
    }
}

Это сбивает с толкуя не понимаю, как установить свойство dirPath для моего контейнера, в котором находится тип Config.

Спасибо

...