Gradle에서 `sourceSets`를 사용하는 방법은 무엇인가요?
_____A1: `sourceSets`는 Gradle 빌드에서 소스 코드와 리소스 파일의 위치를 정의하는 구성 요소입니다. 기본적으로 `main`과 `test` source set이 있으며, 각각의 소스 경로, 리소스 경로, 컴파일 클래스 패스 등을 설정할 수 있습니다.
Q2: `sourceSets`를 기본적인 형태로 어떻게 선언하나요?
A2: `build.gradle` 파일 내에서 다음과 같이 선언합니다.
```groovy
sourceSets {
main {
java {
srcDirs = ['src/main/java']
}
resources {
srcDirs = ['src/main/resources']
}
}
test {
java {
srcDirs = ['src/test/java']
}
resources {
srcDirs = ['src/test/resources']
}
}
}
```
이는 기본값과 동일하지만, 사용자 지정 경로나 추가 설정을 할 때 유용합니다.
Q3: 새로운 sourceSet을 추가하려면 어떻게 하나요?
A3: 다음과 같이 `sourceSets` 블록 내에 새로운 이름으로 추가합니다.
```groovy
sourceSets {
integrationTest {
java {
srcDirs = ['src/integrationTest/java']
}
resources {
srcDirs = ['src/integrationTest/resources']
}
compileClasspath += sourceSets.main.output + configurations.testRuntimeClasspath
runtimeClasspath += output + compileClasspath
}
}
```
추가한 sourceSet에 맞는 컴파일 및 테스트 작업도 별도로 설정해야 합니다.
Q4: sourceSet의 클래스를 참조하는 방법은?
A4: Gradle 태스크에서 `sourceSets`를 다음과 같이 사용할 수 있습니다.
```groovy
tasks.register('printMainJavaSrc') {
doLast {
println sourceSets.main.java.srcDirs
}
}
```
이는 `main` 소스 코드 디렉터리 목록을 출력합니다.
Q5: 자바 소스 외에 다른 언어 소스 경로를 설정할 수 있나요?
A5: 네, 예를 들어 Kotlin 코드를 포함할 때는 해당 언어 소스 세트를 별도로 지정하거나, 단일 sourceSet 내에서 설정할 수 있습니다. 보통 `java` 대신 `kotlin`을 사용합니다.
```groovy
sourceSets {
main {
kotlin {
srcDirs = ['src/main/kotlin']
}
}
}
```
적용하려면 Kotlin 플러그인을 함께 사용해야 합니다.
Q6: `sourceSets`에 포함된 리소스 파일의 위치를 변경하려면?
A6: `resources.srcDirs` 속성을 수정하면 됩니다.
```groovy
sourceSets {
main {
resources {
srcDirs = ['custom/resources/path']
}
}
}
```
Q7: 특정 sourceSet에 의존성을 추가하려면 어떻게 해야 하나요?
A7: 보통 기본 sourceSet인 `main`과 `test`에 대해 `dependencies`를 추가하며, 다른 sourceSet의 경우 별도의 구성(configuration)을 만들어 연결해야 합니다. 예를 들어 `integrationTest` sourceSet에 의존성을 추가하려면 다음과 같이 합니다.
```groovy
configurations {
integrationTestImplementation.extendsFrom implementation
integrationTestRuntimeOnly.extendsFrom runtimeOnly
}
dependencies {
integrationTestImplementation 'org.some:library:1.0'
}
```
Q8: 기존 sourceSet을 수정하는 팁이 있나요?
A8: 주의할 점은, 기본 sourceSet 경로를 수정하면 기존 플러그인(예: 자바 또는 안드로이드 플러그인)이 기대하는 기본 구조와 달라질 수 있으므로 빌드가 실패할 수 있습니다. 경로를 변경할 경우 다른 관련 설정도 함께 조정해야 합니다.
Q9: Gradle 버전에 따른 `sourceSets` 사용 시 유의사항은?
A9: Gradle 5.x 이상부터는 Kotlin DSL로도 `sourceSets`를 선언할 수 있으며, 문법이 약간 다릅니다. 예:
```kotlin
sourceSets {
val main by getting {
java.srcDirs("src/main/kotlin")
}
}
```
따라서 사용 중인 Gradle 버전에 맞는 문서를 참고해야 합니다.
---
요약하면, Gradle의 `sourceSets`는 빌드에 포함되는 소스와 리소스 위치를 세밀하게 제어하는 구조이며, 사용자 프로젝트에 맞게 경로, 의존성, 컴파일 및 런타임 클래스패스를 조정할 수 있습니다.
작성자:
정예린 [비회원]
| 작성일자: 1년 전
2025-01-01 07:51:46
조회수: 147 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 147 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.