2
두 소스 위치에 대한 구성을 노출해야하는 약간의 gradle 플러그인을 작성 중입니다. 나는 현재 프로젝트 확장을 통해이 일을하고 있고 소비자 Gradle을 파일 것 같은 문법 :사용자 정의 gradle 플러그인의 SourceSet 스타일 구문
이 나의 첫 번째 시도는 지금과 같은 확장 클래스에 두 가지 속성함으로써 달성되었다generator {
idl {
baseDir = "src"
include = "*.idl"
exclude = "**/.svn"
}
template {
baseDir = "src"
include = "*.template"
exclude = "**/.svn"
}
}
:
class GeneratorExtension {
public static final NAME = "generator"
private Project project
GeneratorExtension(Project project) {
this.project = project
}
@Input ConfigurableFileTree idl
@Input ConfigurableFileTree template
void idl(String dir, Closure closure) {
idl = project.fileTree(dir, closure)
}
void template(String dir, Closure closure) {
template = project.fileTree(dir, closure)
}
}
을 이 작동하지만, 나에게 내가 선호하는 깨끗한 가용성을 제공하지 않습니다 이제
generator {
idl (dir = "src") {
include = "*.idl"
exclude = "*"
}
template (dir = "src") {
include = "*.template"
exclude = ""
}
}
:에 Gradle을 파일 구문을 변경
. 나는 모두 gradle과 groovy에 익숙하지 않은 것 같습니다. 은 DefaultNamedDomainObjectSet을 사용하여 원하는 것을 수행 할 수 있지만 내부 클래스를 참조하므로 여기에 있습니다.
확장 프로그램을 추가하는 올바른 방법은 FileTree를 사용하지만 깨끗한 소비자 구문을 유지합니까?
미리 감사드립니다.
체크 아웃'project.container()', 예를 들어, 여기에
내가 함께 결국 무엇 [Gradle Build Language Reference] (http://gradle.org/docs/current/dsl/index.html)를 참조하십시오. –팁 주셔서 감사합니다! 나는 지금 내가되고 싶은 길을 가고있다. – Myles