Develop/Android

[Android] Gradle 7.2 이상 플러그인, 의존성, 저장소 추가 방법

Linitial 2024. 2. 19. 12:00
반응형

포스팅 환경

  • M1 Mac OS Ventura 13.4.1
  • Android Studio Giraffe | 2022.3.1 Patch 1 (ARM)
  • Gradle 8.2
  • Android Build Gradle 8.2.2
  • Kolin 1.9.22
  • Target SDK 33

 

기존 추가 방식

기존 Gradle 7.2 이하 버전에서는 새 프로젝트를 생성하면

 

아래와 같은 구조가 생성되었습니다.

 

 

build.gradle(project)

buildscript {
    repositories {
        google()
        mavenCentral()
    }

    dependencies {
        ...
        classpath "org.jetbrains.kotlin:kotlin-serialization:1.9.22"
        ...
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url '<https://jitpack.io>'}
    }
}

 

플러그인을 추가할 때는 기존에 classpath 형태로 의존성을 추가하고

 

플러그인을 사용해줄 모듈에 플러그인 구문과 의존성 구문을 추가하는 형태였었습니다.

 

 

build.gradle(app)

plugins {
    id 'org.jetbrains.kotlin.plugin.serialization'
}

...

dependencies {
    implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3"
}

 

정리하자면 classpath, plugin, implementation 3가지의 구문을 추가하여야 의존성을 모듈에 추가할 수 있었습니다.

 

하지만 7.2 이상이 되고 부터는 추가하는 형태가 변경 되었습니다.

 

Gradle 7.2 이상 추가 방식

플러그인, 의존성 추가

Gradle 7.2 이상 부터는 플러그인과 의존성 추가가 아래와 같이 변경되었습니다.

 

build.gradle(project)

plugins {
    id 'org.jetbrains.kotlin.plugin.serialization' version '1.9.22' apply false
}

 

 

build.gradle(app)

plugins {
    id 'org.jetbrains.kotlin.plugin.serialization'
}

...

dependencies {
    implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.3"
}

 

project level 의 gradle 에 plugin 을 명시해주고

 

app level 의 gradle 에 plugin 을 명시하면 의존성이 추가 됩니다.

 

정리하자면 plugin, implementation 구문만 추가하면 손쉽게 의존성을 추가할 수 있도록 변경되었습니다.

 

저장소 추가

저장소의 경우 setting.gradle 파일에서 추가하도록 변경되었습니다.

 

기존

build.gradle(project)

buildscript {
    repositories {
        google()
        mavenCentral()
		
        // 새 저장소
        maven { url '<https://jitpack.io>'}
    }

    dependencies {
        ...
        classpath "org.jetbrains.kotlin:kotlin-serialization:1.9.22"
        ...
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
        // 새 저장소
        maven { url '<https://jitpack.io>'}
    }
}

 

 

변경

setting.gradle

pluginManagement {
    repositories {
        google()
        mavenCentral()
        gradlePluginPortal()
        // plugin 관련 저장소 추가
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        // 의존성 관련 저장소 추가
        maven { url '<https://jitpack.io>'}
    }
}

rootProject.name = "appname"
include ':app'

 

변경 된 구조를 살펴보면 pluginManagement 와 dependencyResolutionManagement 가 눈에 들어오는데

 

각각은 플러그인 전용 저장소와 의존성 저장소를 추가하는 영역으로 변경되었습니다.

 

더 간단하게 변경되었다고 볼 수 있습니다.

 

 

이상으로 포스팅을 마치겠습니다.

 

감사합니다. :)

반응형