Ho qualcosa come il plug-in di seguito in cui ho uno spazio dei nomi esterno e al suo interno c'è una singola istanza "concreta" (mother
) di un oggetto più un'altra raccolta (children
).Aggiunta di istanza di oggetto all'estensione del plugin gradle
family {
mother {
firstname = 'John'
lastname = 'Cleese'
}
children {
son {
firstName = 'John'
lastName = 'Cleese'
}
daughter {
firstName = 'Jane'
lastName = 'Cleese'
}
}
}
sono in grado di aggiungere l'oggetto di raccolta e leggere le variabili in base a vari esempi che ho visto, ma non sicuro di come aggiungo l'istanza concreta in aggiunta.
Come si definisce sull'oggetto estensione?
Codice che mostra il problema - Vorrei aggiungere mother
come singola istanza al plugin.
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction
import org.gradle.api.NamedDomainObjectContainer
import org.gradle.api.*
class Person
{
final String name
String firstName
String lastName
Person(String name) { this.name = name }
}
class FamilyExtension {
final NamedDomainObjectContainer<Person> children
Person mother
Person father
FamilyExtension(children) {
this.children = children
}
def children(Closure closure) {
children.configure(closure)
}
}
class FamilyPlugin implements Plugin<Project> {
void apply(Project project) {
project.task('sayHello', type: DefaultTask) << {
println(
"Hello ${project.family.children["son"].firstName} " +
"and hello ${project.family.children["daughter"].firstName} ")
}
def children = project.container(Person)
project.extensions.create("family", FamilyExtension, children)
}
}
apply plugin: FamilyPlugin
family {
// How do I add support for this?
// mother {
// firstname = 'John'
// lastname = 'Cleese'
// }
children {
son {
firstName = 'John'
lastName = 'Cleese'
}
daughter {
firstName = 'Jane'
lastName = 'Cleese'
}
}
}
Non sei sicuro di ciò che si desidera raggiungere. Aggiungi supporto per l'impostazione di 'firstname' e' lastname' su mother o semplicemente su single mother? – Opal
Vorrei impostare i valori del nome sulla madre single, ma in generale mi piace capire come ho questo mix di ObjectContainer e oggetti "semplici" nella DSL. –
Non ho trovato nessun progetto di esempio utilizzando entrambi questi o come impostare oggetti sull'estensione che non usano configure (closure) –