How to import class defined in a init script to build.gradle?

Viewed 222

I'm writing a gradle extension in an init-script but I don't know how to reference the extension in build.gralde.

// init.gradle.kts


allprojects {
  extensions.create("message", MessageExtension::class)
}

open class MessageExtension(objects: ObjectFactory) {
    // A configurable greeting
    val greeting: Property<String> = objects.property()
}

I can reference message in groovy build.gradle, it's happy to pull message from thin air.

// build.gradle (groovy)
message.greeting = "hi"

But build.gradle.kts references to messages are unresolved.

// build.gradle.kts
   message.greeting = "hi"
// ^ Unresolved reference: message

If I try to find the extension by type the class is also unresolved.

// build.gradle.kts
val messages = project.extensions.findByType(MessageExtension::class)
//                                           ^ Unresolved reference: MessageExtension

I've tried declaring a package in my init.gradle.kts and importing it, but the import is also unresolved.

1 Answers

Try this in your build.gradle.kts:

the<MessageExtension>().greeting = "hi"
Related