Понимание Gradle DSL утка ввода - PullRequest
0 голосов
/ 06 апреля 2020

У меня был фон в C и Java, и мне не очень удобно печатать на утке. Я пытаюсь изучить Gradle DSL, который по сути является API объектов, предоставляемых Gradle.

В приведенном ниже примере, чтобы понять, что происходит, я подключил его к IntelliJ и посмотрел, какие объекты и методы вызываются. Например, repositories - это метод, вызываемый для ScriptHandler.repositories(Closure closure).

//Below is a call to ScriptHander.repositories(Closure closure)
repositories {
    //Below is call to MavenArtifactoryRepository.setUrl(Object obj)
    url "https://someplace.org/artifactory/some_repo"
    credentials {
        username "someUser" 
        password "somePass"
    }
}

. Мой вопрос заключается в следующем:

(1) Я пытаюсь неправильно изучить DSL, пытаясь соединить «типы утки» с реальными типами? Возможно, это потому, что у меня есть опыт работы только в строго типизированных языках.

(2) Чтобы понять, что я могу вызвать url "https://someplace.org/artifactory/some_repo" в замыкании, переданном методу repositories, я должен знать, что мое закрытие выполняется на экземпляре MavenArtifactoryRepository. Я понял это с помощью IntelliJ IDE. Так что я ожидаю, что смогу понять это и без IDE. Это возможно и если да, то как?

...