Tôi có một cái gì đó giống như plugin bên dưới, nơi tôi có một vùng tên bên ngoài và bên trong nó có một cá thể 'cụ thể' (mother
) của một đối tượng cộng với một bộ sưu tập khác (children
).Thêm đối tượng vào phần mở rộng plugin gradle
family {
mother {
firstname = 'John'
lastname = 'Cleese'
}
children {
son {
firstName = 'John'
lastName = 'Cleese'
}
daughter {
firstName = 'Jane'
lastName = 'Cleese'
}
}
}
Tôi có thể thêm đối tượng bộ sưu tập và đọc các biến dựa trên các ví dụ khác nhau mà tôi đã nhìn thấy nhưng không chắc chắn cách thêm ví dụ cụ thể.
Làm cách nào để xác định nó trên đối tượng tiện ích mở rộng?
Mã hiển thị sự cố - Tôi muốn thêm mother
làm một phiên bản duy nhất với 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'
}
}
}
Không chắc chắn những gì bạn muốn đạt được. Thêm hỗ trợ cho việc thiết lập 'firstname' và' lastname' trên mẹ hoặc chỉ có trên người mẹ đơn thân? – Opal
Tôi muốn thiết lập các giá trị tên trên người mẹ độc thân nhưng nói chung là muốn hiểu làm thế nào tôi có sự kết hợp của ObjectContainers và các đối tượng 'đơn giản' trong DSL. –
Tôi cũng không tìm thấy bất kỳ dự án mẫu nào sử dụng cả hai dự án này hoặc cách đặt đối tượng trên tiện ích mở rộng không sử dụng cấu hình (đóng) –