개발/스프링
spring boot 프로젝트 구조
깉니
2023. 12. 4. 14:01
디렉토리 별 구분
이러한 디렉토리 구조는 주로 Maven 또는 Gradle과 같은 Java 프로젝트 관리 도구에서 사용되는 표준 디렉토리 구조입니다. 이러한 디렉토리들은 프로젝트의 소스 코드 및 리소스를 구성하는 데 사용됩니다.
- src/main/java:
- 이 디렉토리에는 주 프로젝트 코드가 위치합니다.
- Java 소스 코드 파일들이 여기에 포함됩니다.
- 주로 프로덕션 코드와 비즈니스 로직이 이 디렉토리에 위치합니다.
- src/main/resources:
- 이 디렉토리에는 주로 프로젝트에서 사용하는 리소스 파일이 위치합니다.
- 예를 들어, 설정 파일, 이미지, 데이터베이스 초기화 스크립트 등이 여기에 들어갈 수 있습니다.
- 리소스 파일은 프로덕션 코드에서 사용되는데, 주로 클래스패스를 통해 접근됩니다.
- src/test/java:
- 이 디렉토리에는 테스트 코드가 위치합니다.
- 주로 JUnit 또는 TestNG와 같은 테스팅 프레임워크를 사용하여 작성된 테스트 클래스들이 여기에 들어갑니다.
- 테스트 코드는 프로덕션 코드를 검증하고 품질을 보장하는 데 사용됩니다.
- maven, gradle : Java 기반 프로젝트를 관리하고 빌드하기 위한 도구
1. DSL (도메인 특화 언어) 사용:
- Maven: XML 기반의 설정 파일을 사용합니다. POM (Project Object Model)은 프로젝트의 구조와 의존성을 정의합니다.
- Gradle: Groovy 또는 Kotlin 기반의 DSL을 사용합니다. 이는 더 간결하고 가독성이 높은 빌드 스크립트를 가능하게 합니다.
2. 설정의 유연성:
- Maven: 일반적으로 XML 구조로 된 POM 파일에서 제공하는 설정이 제한적이며, 일부 복잡한 작업을 수행하기 위해선 플러그인을 사용해야 할 수 있습니다.
- Gradle: 높은 유연성을 제공하며, 특정 요구사항에 맞게 빌드 스크립트를 작성하는 데 용이합니다.
3. 성능:
- Maven: 초기 빌드 속도는 느릴 수 있습니다. 의존성 해결 및 빌드 시에 전체 프로젝트를 다시 빌드해야 하는 경우가 있습니다.
- Gradle: 더 높은 성능을 제공합니다. 인클루드 및 디펜던시 캐싱 등의 기능으로 인해 변경 사항이 있는 경우에만 필요한 작업을 수행하므로 더 빠른 빌드가 가능합니다.
4. 플러그인 생태계:
- Maven: 방대한 수의 플러그인이 존재하며, 표준화된 POM 구조를 통해 쉽게 사용할 수 있습니다.
- Gradle: Maven과 호환되는 많은 플러그인을 제공하면서도, 자체적으로 매우 강력한 플러그인 시스템을 갖추고 있습니다.
5. 커뮤니티 및 생태계:
- Maven: 많은 프로젝트 및 기업에서 채택하고 있으며, 풍부한 문서 및 지원이 제공됩니다.
- Gradle: Maven에 비해 상대적으로 새로운 도구이지만, 빠르게 성장하고 있습니다. 생태계는 계속 확장되고 있으며, Android 개발 등 다양한 컨텍스트에서 널리 사용되고 있습니다.