2018年8月10日 星期五

檔案/目錄操作 (Gradle 4.x 四)

官網連結

GradleTest 是父專案,SubGradle1 是子專案, Project 裡的方法有很多都是寫在父或子專案效果會不同的

※父專案

task getAbsoluteOfRoot {
    println getRootDir().absolutePath // D:\GradleTest
    println getProjectDir().absolutePath // D:\GradleTest
    println getBuildDir().absolutePath // D:\GradleTest\build
}
    
getFileContent('xxx.txt')
def getFileContent(String filePath) {
    // println file(filePath).text
    files(filePath).each {
        println it.text
    }
}



※子專案

task getAbsoluteOfSub {
    println getRootDir().absolutePath // D:\GradleTest
    println getProjectDir().absolutePath // D:\GradleTest\SubGradle1
    println getBuildDir().absolutePath // D:\GradleTest\SubGradle1\build
}



※複製檔案

task copyTaskDir(type: Copy) {
    from 'D:/testCopy'
    into 'D:/result/xxx'
    exclude { it.file.name.endsWith('apk') }
    delete 'D:/result/xxx/abc.txt'
}
    
copy {
    from file('xxx.txt')
    // println getSubprojects().getAt(0).getBuildDir()
    into getSubprojects().getAt(0).getBuildDir()
    rename { 'ooo.txt' }
}

※以上兩種方式都可以,但要注意 delete 會先執行,再做複製的動作


※複製目錄

copy {
    from files('testCopy/')
    println getSubprojects().getAt(0).getBuildDir()
    into getSubprojects().getAt(0).getBuildDir()
    exclude { it.file.name.endsWith('apk') }
}

task copyFile (type: Copy) {
    from files('testCopy/')
    into getSubprojects().getAt(0).getBuildDir()
    exclude { it.file.name.endsWith('apk') }
}




※fileTree

// fileTree('')
// fileTree.visit {}
    
fileTree('D:/testCopy') {
    it.visit {
        print it.directory ? "目錄" : "|--檔案"
        println "為:$it.name"
        // copy {}
    }
}

※註解的兩行就等於它下面的寫法,所以不用寫的這麼麻煩

沒有留言:

張貼留言