Я хотел бы добавить функцию к существующим типам, в моем случае это NativeLibrarySpec
.Gradle: расширение DLS существующего типа
Я пробовал с gradle extensions, и он уже работает, но теперь я хочу обобщить его для возможности использовать его, как если бы это была стандартная функциональность DSL NativeLibrarySpec
. Проблема заключается в том, что я могу получить доступ к экземпляру только после его конфигурации (блок, содержащий мою функцию), и поэтому он терпит неудачу, потому что он пытается позвонить specialConfig
, прежде чем я смогу связать его ...
Вот код (не заботятся о том, что этот пример для нативного программного обеспечения C++):.
// File: build.gradle
apply plugin: 'cpp'
class SpecialConfig {
NativeComponentSpec componentSpec
SpecialConfig(NativeComponentSpec componentSpec) {
this.componentSpec = componentSpec
}
def something(boolean enabled) {
componentSpec.sources {
cpp {
// Some important stuffs
}
}
}
}
model {
components {
main(NativeLibrarySpec) {
// How to bring this out ??
project.extensions.create('specialConfig', SpecialConfig, it)
// This is the new functionality I want to use
specialConfig {
something(true)
}
}
}
}
Вот другой пример, но он будет работать только от проекта * https://dzone.com/articles/gradle-goodness-extending-dsl
Спасибо за ваше время :) К сожалению, я ищу способ сделать это без необходимости передавать параметры, код должен выглядеть свободно – 56ka