{"meta":{"title":"Gradle을 사용하여 Java 빌드 및 테스트","intro":"GitHub Actions CI(연속 통합) 워크플로를 만들어 Gradle을 사용하여 Java 프로젝트를 빌드하고 테스트하는 방법을 알아봅니다.","product":"GitHub Actions","breadcrumbs":[{"href":"/ko/enterprise-cloud@latest/actions","title":"GitHub Actions"},{"href":"/ko/enterprise-cloud@latest/actions/tutorials","title":"자습서"},{"href":"/ko/enterprise-cloud@latest/actions/tutorials/build-and-test-code","title":"코드 빌드 및 테스트"},{"href":"/ko/enterprise-cloud@latest/actions/tutorials/build-and-test-code/java-with-gradle","title":"Gradle을 사용하여 Java"}],"documentType":"article"},"body":"# Gradle을 사용하여 Java 빌드 및 테스트\n\nGitHub Actions CI(연속 통합) 워크플로를 만들어 Gradle을 사용하여 Java 프로젝트를 빌드하고 테스트하는 방법을 알아봅니다.\n\n## 소개\n\n이 가이드에서는 Gradle 빌드 시스템을 사용하여 Java 프로젝트에 대한 CI(연속 통합)를 수행하는 워크플로를 만드는 방법을 보여 줍니다. 만든 워크플로를 사용하면 끌어오기 요청에 커밋할 때 기본 분기에 대한 빌드 또는 테스트 오류가 발생하는 경우를 확인할 수 있습니다. 이 방법은 코드가 항상 정상인지 확인하는 데 도움이 될 수 있습니다. CI 워크플로를 확장하여 파일을 캐시하고 워크플로 실행에서 아티팩트를 업로드할 수 있습니다.\n\nGitHub에서 호스팅하는 실행기는 Java Development Kit(JDK)와 Gradle이 사전 설치된 소프트웨어 도구 캐시를 제공합니다. JDK 및 Gradle용 소프트웨어 및 미리 설치된 버전 목록은 [GitHub 호스팅 실행기](/ko/enterprise-cloud@latest/actions/using-github-hosted-runners/about-github-hosted-runners#supported-software)을(를) 참조하세요.\n\n## 필수 조건\n\nYAML 및 GitHub Actions의 구문에 대해 잘 알고 있어야 합니다. 자세한 내용은 다음을 참조하세요.\n\n* [GitHub Actions에 대한 워크플로 구문](/ko/enterprise-cloud@latest/actions/using-workflows/workflow-syntax-for-github-actions)\n* [워크플로 작성](/ko/enterprise-cloud@latest/actions/learn-github-actions)\n\nJava 및 Gradle 프레임워크를 기본적으로 이해하는 것이 좋습니다. 자세한 내용은 [Gradle 사용자 설명서](https://docs.gradle.org/current/userguide/userguide.html)를 참조하세요.\n\n## Gradle 워크플로 템플릿 사용\n\n빠르게 시작하려면 워크플로 템플릿을 리포지토리의 `.github/workflows` 디렉터리에 추가합니다.\n\nGitHub는 Gradle을 사용하는 대부분의 Java 프로젝트에 적합한 워크플로우 템플릿을 제공합니다. 이 가이드의 후속 섹션에서는 이 워크플로 템플릿을 사용자 지정하는 방법에 대한 예시를 제공합니다.\n\n1. GitHub에서 리포지토리의 기본 페이지로 이동합니다.\n\n2. 리포지토리 이름에서 **<svg version=\"1.1\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" class=\"octicon octicon-play\" aria-label=\"play\" role=\"img\"><path d=\"M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z\"></path></svg> 작업**을 클릭합니다.\n\n   ![\"github/docs\" 리포지토리의 탭 스크린샷. \"작업\" 탭은 주황색 윤곽선으로 강조 표시됩니다.](/assets/images/help/repository/actions-tab-global-nav-update.png)\n\n3. 리포지토리에 워크플로가 이미 있는 경우 **새 워크플로**를 클릭합니다.\n\n4. \"워크플로 선택\" 페이지에는 권장되는 워크플로 템플릿의 선택 항목이 표시됩니다. \"Java와 Gradle을 함께 검색합니다.\"\n\n5. \"Gradle을 사용한 Java\" 워크플로에서 **Configure** 클릭합니다.\n   이 워크플로는 다음 단계를 수행합니다.\n\n6. 프로젝트 리포지토리의 복사본을 체크 아웃합니다.\n\n7. Java JDK를 설정합니다.\n\n8. Gradle 환경을 설정합니다. 이 [`gradle/actions/setup-gradle`](https://github.com/gradle/actions) 작업은 워크플로 실행 간의 캐싱 상태를 처리하고 모든 Gradle 실행에 대한 자세한 요약을 제공합니다.\n\n9. \"Gradle로 빌드하기\" 단계는 `build` 작업을 [Gradle Wrapper](https://docs.gradle.org/current/userguide/gradle_wrapper.html)를 사용하여 실행합니다.\n\n10. 필요에 따라 워크플로를 편집합니다. 예를 들어 Java 버전을 변경합니다.\n\n    > \\[!NOTE]\n    >\n    > * 워크플로 템플릿에는 GitHub에서 인증되지 않은 작업이 포함되어 있습니다. 제3자가 제공하는 작업은 별도의 서비스 약관, 개인 정보 보호 정책 및 지원 문서를 적용합니다.\n    > * 타사의 작업을 사용하는 경우 커밋 SHA에서 지정한 버전을 사용해야 합니다. 작업을 수정하고 최신 버전을 사용하려는 경우 SHA를 업데이트해야 합니다. 태그 또는 분기를 참조하여 버전을 지정할 수 있지만 경고 없이 작업이 변경될 수 있습니다. 자세한 내용은 [안전 사용 참조](/ko/enterprise-cloud@latest/actions/security-guides/security-hardening-for-github-actions#using-third-party-actions)을(를) 참조하세요.\n\n11. ```\n           **변경 내용 커밋**을 클릭합니다.\n    ```\n\n`gradle.yml` 워크플로 파일이 리포지토리의 `.github/workflows` 디렉터리에 추가됩니다.\n\n### Java 버전 및 아키텍처 지정\n\n워크플로 템플릿은 x64 플랫폼의 경우 OpenJDK 8을 포함하도록 `PATH`을(를) 설정합니다. 다른 버전의 Java를 사용하거나 다른 아키텍처(`x64` 또는 `x86`)를 대상으로 지정하려는 경우 `setup-java` 작업을 사용하여 다른 Java 런타임 환경을 선택할 수 있습니다.\n\n예를 들어 x64 플랫폼용 Adoptium에서 제공하는 JDK 버전 11을 사용하려면 `setup-java` 작업을 사용하고 `java-version`, `distribution` 및 `architecture` 매개 변수를 각각 `'11'`, `'temurin'` 및 `x64`로 구성할 수 있습니다.\n\n```yaml copy\nsteps:\n  - uses: actions/checkout@v6\n  - name: Set up JDK 11 for x64\n    uses: actions/setup-java@v4\n    with:\n      java-version: '11'\n      distribution: 'temurin'\n      architecture: x64\n```\n\n자세한 내용은 [`setup-java`](https://github.com/actions/setup-java) 작업을 참조하세요.\n\n## 코드 빌드 및 테스트\n\n코드를 빌드하고 테스트하기 위해 로컬에서 사용하는 것과 동일한 명령을 사용할 수 있습니다.\n\n워크플로 템플릿은 기본적으로 `build` 작업을 실행합니다. 기본 Gradle 구성에서 이 명령은 종속성을 다운로드하고, 클래스를 빌드하고, 테스트를 실행하고, 클래스를 배포 가능한 형식(예시: JAR 파일)으로 패키지합니다.\n\n다른 명령을 사용하여 프로젝트를 빌드하거나 다른 작업을 사용하려는 경우 해당 명령을 지정할 수 있습니다. 예를 들어 `package` 파일에 구성된 `ci.gradle` 작업을 실행할 수 있습니다.\n\n```yaml copy\n# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.\n# 작업은 타사에서 제공하며\n# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.\n# 참조하세요.\nsteps:\n  - uses: actions/checkout@v6\n  - uses: actions/setup-java@v4\n    with:\n      java-version: '17'\n      distribution: 'temurin'\n\n  - name: Setup Gradle\n    uses: gradle/actions/setup-gradle@017a9effdb900e5b5b2fddfb590a105619dca3c3 # v4.4.2\n\n  - name: Build with Gradle\n    run: ./gradlew -b ci.gradle package\n```\n\n## 종속성 캐시 처리\n\n워크플로 실행 속도를 높이기 위해 빌드 종속성을 캐시할 수 있습니다. 성공적인 실행 후 `gradle/actions/setup-gradle`은 Gradle 사용자 홈 디렉터리의 중요한 부분을 캐시합니다. 이후 작업에서는 빌드 스크립트를 다시 컴파일할 필요가 없고 원격 패키지 리포지토리에서 종속성을 다운로드할 필요가 없도록 캐시가 복원됩니다.\n\n캐싱은 `gradle/actions/setup-gradle` 작업을 사용할 때 기본값으로 사용하도록 설정됩니다. 자세한 내용은 [`gradle/actions/setup-gradle`](https://github.com/gradle/actions/blob/main/setup-gradle/README.md#caching-build-state-between-jobs)를 참조하세요.\n\n## 워크플로 데이터를 아티팩트로 패키지\n\n빌드가 성공하고 테스트가 통과된 후 결과 Java 패키지를 빌드 아티팩트로 업로드할 수 있습니다. 그러면 워크플로 실행의 일부로 빌드된 패키지를 저장하고 다운로드할 수 있습니다. 아티팩트는 병합되기 전에 로컬 환경에서 끌어오기 요청을 테스트하고 디버그하는 데 도움이 될 수 있습니다. 자세한 내용은 [워크플로 아티팩트와 데이터 저장 및 공유](/ko/enterprise-cloud@latest/actions/using-workflows/storing-workflow-data-as-artifacts)을(를) 참조하세요.\n\nGradle은 일반적으로 `build/libs` 디렉터리에 JAR, EAR 또는 WAR과 같은 출력 파일을 생성합니다.\n`upload-artifact` 작업을 사용하여 해당 디렉터리의 콘텐츠를 업로드할 수 있습니다.\n\n```yaml copy\n# 이 워크플로는 GitHub에서 인증되지 않은 작업을 사용합니다.\n# 작업은 타사에서 제공하며\n# 별도의 서비스 약관, 개인정보처리방침, 지원 설명서에서 규정됩니다.\n# 참조하세요.\nsteps:\n  - uses: actions/checkout@v6\n  - uses: actions/setup-java@v4\n    with:\n      java-version: '17'\n      distribution: 'temurin'\n\n  - name: Setup Gradle\n    uses: gradle/actions/setup-gradle@017a9effdb900e5b5b2fddfb590a105619dca3c3 # v4.4.2\n\n  - name: Build with Gradle\n    run: ./gradlew build\n\n  - name: Upload build artifacts\n    uses: actions/upload-artifact@v4\n    with:\n      name: Package\n      path: build/libs\n```"}