gradle 8

[안드로이드] MyMavenRepo로 Private Repository 라이브러리 무료 배포하기

Jitpack에서 MyMavenRepo로...안드로이드 SDK 프로토 타입을 개발중인데, 개발한 SDK를 프로덕트에 붙이려니 aar 파일로 직접 배포하는 방식은 아무래도 귀찮았다. 처음엔 자료가 많은 jitpack으로 시작을 했었는데 jitpack은 Private Repository에 대해서는 요금을 부과한다. 무료체험이 끝나니 최소 월 $12를 지불해야했다. 회사에 청구할까 고민했지만 이런 문제를 해결하는 것도 재미있겠다 싶어서 짧게 서치하니 MyMavenRepo라는 무료 플랜이있는 MavenRepository를 발견했다. Step 1. 가입하고 인증하기 먼저 Register를 눌러 유효한 이메일 주소와 MyMavenRepo에서 사용할 Password를 입력해서 가입한다.비밀번호 확인? ..

Build was configured to prefer settings repositories over project repositories but repository 'maven' was added by build file 오류 해결방법

오류 해석 빌드가 project/build.gradle에 선언된 repository보다 settings.gradle에 선언된 repositories를 선호하도록 설정되어 있으나, 프로젝트단에서 "maven"이라는 repositories를 선언해버렸다는 의미이다. 원인 내 settings.gradle.kts 파일에는 RepositoriesMode가 FAIL_ON_PROJECT_REPOS로 설정되어 있다. 이 RepositoriesMode는 3가지 종류가 있다. RepositoriesMode.PREFER_PROJECT 기본 값, settings.gradle에 선언된 repositories를 무시하고, project단의 repositories를 참조한다. RepositoriesMode.FAIL_ON_PROJE..

Gradle의 이해: Plugin

Plugins 플러그인은 총 3종류로 구분할 수 있다. Gradle Core Plugin Gradle에서 제공하는 플러그인으로 Plugin의 namespace가 org.gradle인 플러그인 들이다. 앞서 보았던 ‘java-library’도 이에 해당한다. Version 정의가 필요 없다. Community Plugin 보통 gradlePluginPortal()에 위치하고 있으며 ID와 Version으로 구성되어 있다. Convention Plugin 로컬에서 직접 구성하는 플러그인이다. 많은 하위 프로젝트가 있는 프로젝트에서, 동일한 빌드 구성 또는 빌드 로직을 반복작업해야하는 번거로움이 생기는데, Convention Plugin을 구성해두면 빌드 구성을 캡슐화해서 단 한줄만으로 원하는 빌드 구성을 적..

Gradle의 이해: Task

Tasks gradle :project:tasks 를 입력하면 프로젝트에서 수행 가능한 Task들을 알 수 있다. Gradle 작업의 중요한 측면은 증분성에 있다. 이는 Gradle이 이전 빌드의 결과를 재사용 할 수 있다는 것을 의미한다. 따라서 프로젝트를 빌드하고 소스 코드의 작은 부분만 변경했다면, 다시 빌드하더라도 다시 수행해야하는 Task들은 처음 빌드보다 적어진다. > Task :app:processProductionDebugGoogleServices UP-TO-DATE > Task :app:productionDebugOssDependencyTask UP-TO-DATE > Task :app:productionDebugOssLicensesTask UP-TO-DATE > Task :app:merg..

Gradle의 이해: settings.gradle

The Settings File 새 Gradle 프로젝트를 만드려면 프로젝트에 settings.gradle.kts를 추가해야한다. rootProject.name으로 프로젝트에 이름을 지정한다. rootProject.name = "my-project" dependencyResolutionManagement 에서 프로젝트의 모든 하위 프로젝트들에서 이용되는 Repository와 종속성을 구성한다. dependencyResolutionManagement { repositories { mavenCentral() ... } includeBuild("../my-other-project") } pluginManagement로 플러그인을 찾을 수 있는 위치를 지정한다. pluginManagement { reposito..

Build was configured to prefer settings repositories over project repositories but repository 'maven' was added by build file 오류 해결방법

오류 분석 빌드가 project/build.gradle에 선언된 repository보다 settings.gradle에 선언된 repositories를 선호하도록 설정되어 있으나, 프로젝트단에서 "maven"이라는 repositories를 선언해버렸다는 의미이다. 오류 원인 내 settings.gradle.kts 파일에는 RepositoriesMode가 FAIL_ON_PROJECT_REPOS로 설정되어 있다. 이 RepositoriesMode는 3가지 종류가 있다. RepositoriesMode.PREFER_PROJECT: 기본 값, settings.gradle에 선언된 repositories를 무시하고, project단의 repositories를 참조한다. RepositoriesMode.FAIL_ON_P..

Gradle이란?

What’s Gradle? Gradle은 오픈소스 빌드 자동화 도구다. 그래서…풀네임은 “Gradle Build Tool”이다. 현재 JVM용으로 가장 널리 사용되는 빌드 시스템이며, Groovy라는 빌드 스크립트 언어를 제공한다. Gradle이 널리 쓰이기 이전엔 Maven이라는 빌드 도구가 있으나 확장성이나 성능적 측면에서 앞섰기 때문에 지금은 Gradle이 많이 채택되고 있다. Gradle의 이점을 공식 웹에서 조금 가져와 봤다. 풍부한 커뮤니티 플러그인 생태계 고도로 추상화된, 선언적이면서 읽고 쓰기 쉬운 빌드 로직 증분 빌드(Incremental Build), 빌드 캐싱, 병렬 실행을 통한 빌드 속도 향상 나도 build.gradle 파일만 열면 뭐가 뭔지 몰라서 복붙만하면서 빌드가 잘 되길 기..

[안드로이드] plugin 적용 중 오류 해결방법: The request for this plugin could not be satisfied because the plugin is already on the classpath with an unknown version

오류발생 The request for this plugin could not be satisfied because the plugin is already on the classpath with an unknown version version catalog를 이용한 plugin 적용중에 "The request for this plugin could not be satisfied because the plugin is already on the classpath with an unknown version"라는 오류가 떴다. 당시 나의 plugins 블록은 다음과 같다. kapt를 추가하면서 문제가 발생했다. plugins { alias(libs.plugins.kotlin.android) alias(libs...