목차

Gradle 파일 다루기

파일 객체 확보

File Collections

파일 Tree

입력 파일 묶음 지정

파일/디렉토리 관리

파일/디렉토리 관리는 Project 객체에 내장된 각종 메소드를 직접 호출하거나, Copy 등의 상위 태스크를 상속받아 태스크로 만드는 방식으로 처리할 수도 있다.

파일 복사

복사시 이름 변경

task rename(type: Copy) {
    from 'src/main/webapp'
    into 'build/explodedWar'
    // Use a closure to map the file name
    rename { String fileName ->
        fileName.replace('-staging-', '')
    }
    // Use a regular expression to map the file name
    rename '(.+)-staging-(.+)', '$1$2'
    rename(/(.+)-staging-(.+)/, '$1$2')
}

복사시 파일 내용 필터링(내용 변형)

import org.apache.tools.ant.filters.FixCrLfFilter
import org.apache.tools.ant.filters.ReplaceTokens
 
task filter(type: Copy) {
    from 'src/main/java'
    into 'build/filtered'
    // Substitute property references in files
    expand(copyright: '2009', version: '2.3.1')
    expand(project.properties)
 
    // Ant이용.
    filter(FixCrLfFilter)
    filter(ReplaceTokens, tokens: [copyright: '2009', version: '2.3.1'])
    // 모든 줄을 대괄호로 감싸기
    filter { String line ->
        "[$line]"
    }
}

CopySpec

Sync

파일 압축