結論
makeDefaultDirectory.gradle
task baseFolderCreate {
sourceSets*.resources.srcDirs*.each { it.exists() ? println("already exists dir ${it}") : it.mkdirs() }
sourceSets*.java.srcDirs*.each { it.exists() ? println("already exists dir ${it}") : it.mkdirs() }
}
おまけ
以下は、Javaしかやってこなかった人間がここに至るまでの過程。
Javaだけで作る
Javaだけやってきた人.gradle
task baseFolderCreate {
for (SourceSetContainer container : sourceSets) {
for (File directory : container.java.srcDirs) {
if (!directory.exists())
if (directory.mkdirs())
System.out.println("create dir " + directory.getPath())
else
System.out.println("failed create dir " + directory.getPath())
else
System.out.println("already exists dir " + directory.getPath())
}
for (File directory : container.resources.srcDirs) {
if (!directory.exists())
if (directory.mkdirs())
System.out.println("create dir " + directory.getPath())
else
System.out.println("failed create dir " + directory.getPath())
else
System.out.println("already exists dir " + directory.getPath())
}
}
}
だめだコイツ・・・。早くなんとかしないと・・・。
※ネタです。
参考リンク:
gradleのbuildスクリプトに与えられるパラメータsourceSetsに関する情報のみ
each, it がちょっと分かってきた
gloovyのeach,itがわかってきた人向け.gradle
task baseFolderCreate {
def func = {File f ->
if (!f.exists()) {
def ret = f.mkdirs()
if (!ret)
println "failed create dir ${f.getPath()}"
else
println "create dir ${f.getPath()}"
}
}
sourceSets.each {
it.java.srcDirs.each(func)
it.resources.srcDirs.each(func)
}
}
クロージャを試し始める。
参考リンク:
API Document クロージャ
API Document リスト操作
groovyだいぶ分かってきた
groovyわかってきた.gradle
task baseFolderCreate {
def filter = {sourceSetContainer, targets ->
sourceSetContainer.each { set ->
targets.each { target ->
set.getAt(target).srcDirs.each { it.exists() ? println("already exists ${it}") : it.mkdirs() }
}
}
}
filter(sourceSets, ["java", "resources"])
}
operatorによるプロパティアクセス。Javaには無い。
JavaScriptでなんとなく知ってたやつ。
参考リンク:
API Documnet operator
完全に理解した。
makeDefaultDirectory.gradle
task baseFolderCreate {
sourceSets*.resources.srcDirs*.each { it.exists() ? println("already exists dir ${it}") : it.mkdirs() }
sourceSets*.java.srcDirs*.each { it.exists() ? println("already exists dir ${it}") : it.mkdirs() }
}
参考リンク:
star-dot* operator