1
내가 gradle로 소스 세트를 동적으로 생성 할 수 있는지 궁금합니다.소스 세트를 동적으로 생성 할 수 있습니까?
- dbfit - JUnit을
- 모듈
- foo는
- 바
- 모듈
이 모듈의 각각 다음과 같이 내 현재 프로젝트의 디렉토리 계층 보인다 폴더 (foo 및 bar)는 h이어야합니다. 그것의 자신의 소스 세트가 지정되었습니다. 그 이유는 dbFitTestFoo 및 dbFitTestBar와 같은 작업을 동적으로 만들고 싶기 때문입니다. 나의 현재의 접근 방식은 다음과 같습니다 : 작업의
ext.dbFitModulesDir = "dbfit-junit/module"
ext.dbFitTestSpecs = ["java", "groovy", "scala", "resources"]
ext.dbFitModules = []
file(dbFitModulesDir).eachDir{ module ->
dbFitModules << module.name
}
/** this needs to be done dynamically for each "module" **/
sourceSets {
integrationTest { sourceSet ->
dbFitModules.each{ module ->
dbFitTestSpecs.each { spec ->
if (!sourceSet.hasProperty(spec)) {
return
}
sourceSet."$spec".srcDir file("$dbFitModulesDir/$module/$spec")
}
}
}
}
dbFitModules.each{ module ->
task "dbFitTest${module.capitalize()}"(type: Test) {
group = "Verification"
description = "Run dbFit tests for $module"
doLast {
testClassesDir = sourceSets.integrationTest.output.classesDir
classpath = sourceSets.integrationTest.runtimeClasspath
}
}
}
생성은 아직 행방 불명입니다 유일한 것은이 sourcesets의 동적 생성 및 할당하고, 원활하게 작동합니다.
어떤 힌트를 주셔서 감사합니다!
와우! Gradle로 거의 모든 것을 할 수있는 것처럼 보입니다. 나는 그것을 좋아합니다. 답변 해주셔서 감사합니다. – u6f6o
안녕하세요,이 _sourceSets.create_ 메서드에 대한 참조가 있습니까? 나는 그것을 발견 할 수 없다 ... 고마워! – Mikyjpeg
메소드는 [Javadocs] (https://docs.gradle.org/current/javadoc/org/gradle/api/NamedDomainObjectContainer.html#create (java.lang.String))에서 찾을 수 있습니다. NamedDomainObjectContainer는 [SourceSetContainer] (https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/SourceSetContainer.html)의 상위 클래스입니다. –