Framework | Library | Tool/tool

Gradle 멀티 모듈 길라잡이

주정용 2022. 7. 4. 00:07
728x90

그래들 공식 문서에서 발췌.

├── gradle // Wrapper 파일을 위한 폴더
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew // Gradle Wrapper 실행 파일
├── gradlew.bat // Gradle Wrapper 실행 파일
├── settings.gradle // 빌드 프로젝트 이름과 서브 프로젝트들이 정의되는 파일이다.
├── buildSrc // 빌드 스크립트가 정의된 디렉터리
│   ├── build.gradle // 빌드 로직의 Dependency가 정의되는 빌드 스크립트. 아래 커스텀 플러그인의 의존성을 관리할 수 있다.
│   └── src
│       └── main
│           └── groovy // groovy로 기술한 플러그인이 정의된 디렉터리(kotlin 스크립트는 kotlin 디렉터리에서)
│               ├── demo-application.gradle // 서브 프로젝트 빌드 스크립트의 plugins 클로저에서 선언될 수 있다.
│               ├── demo-common.gradle // ex) id 'demo-common'
│               └── demo-library.gradle // ex) id 'demo-library'
├── app
│   ├── build.gradle // 서브 프로젝트(app)의 빌드 스크립트
│   └── src
│       ├── main 
│       │   └── java
│       │       └── demo
│       │           └── app
│       │               ├── App.java
│       │               └── MessageUtils.java
│       └── test 
│           └── java
│               └── demo
│                   └── app
│                       └── MessageUtilsTest.java
├── list
│   ├── build.gradle // 서브 프로젝트(list)의 빌드 스크립트
│   └── src
│       ├── main 
│       │   └── java
│       │       └── demo
│       │           └── list
│       │               └── LinkedList.java
│       └── test 
│           └── java
│               └── demo
│                   └── list
│                       └── LinkedListTest.java
└── utilities
    ├── build.gradle // 서브 프로젝트(utilities)의 빌드 스크립트
    └── src
        └── main 
            └── java
                └── demo
                    └── utilities
                        ├── JoinUtils.java
                        ├── SplitUtils.java
                        └── StringUtils.java
  • buildSrc의 build.gradle은 커스텀 플러그인의 플러그인 의존성을 관리하도록 설정할 수 있다.

    • ex) repostories에서 gradlePluginCenter() 선언 등
  • buildSrc에서 커스텀 플러그인 스크립트의 디렉터리는 작성하는 언어에 따라 src/main/groovy 또는 src/main/kotlin 등 다르다.

  • 커스텀 플러그인은 용도에 따라 나누어서 작성할 수 있다.

  • 이렇게 작성한 커스텀 플러그인은 서브 프로젝트의 빌드 스크립트에서 plugins 클로저 내에서 사용할 수 있다.

출처

Gradle Reference : Building Java Applications with libraries Sample