У меня был фон в 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. Это возможно и если да, то как?