Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
root = true

[*]
charset = utf-8
indent_size = 4
indent_style = space
max_line_length = 150
insert_final_newline = true
trim_trailing_whitespace = true

[*.{kt,kts}]
ij_kotlin_allow_trailing_comma = true
ij_kotlin_allow_trailing_comma_on_call_site = true
47 changes: 47 additions & 0 deletions .github/workflows/android-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Android CI

env:
GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx4g -Dorg.gradle.daemon=false"
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true

on:
pull_request:

concurrency:
group: build-${{ github.ref }}
cancel-in-progress: true

jobs:
ci-build:
runs-on: ubuntu-latest

if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-ci') }}

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup JDK 17
uses: actions/setup-java@v3
with:
distribution: 'corretto'
java-version: 17

Comment thread
coderabbitai[bot] marked this conversation as resolved.
- name: Setup Android SDK
uses: android-actions/setup-android@v2

- name: Setup Gradle
uses: gradle/gradle-build-action@v2
with:
gradle-home-cache-cleanup: true

Comment on lines +20 to +37
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

들여쓰기 후 하이픈 뒤 공백이 3칸(- )으로 lint 오류 발생

YAML 스펙에는 문제없지만 actionlint / yamllint 경고가 계속 출력됩니다.
전반적으로 - 한 칸으로 맞추면 경고를 깔끔하게 제거할 수 있습니다.

🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 21-21: too many spaces after hyphen

(hyphens)


[error] 24-24: too many spaces after hyphen

(hyphens)


[error] 30-30: too many spaces after hyphen

(hyphens)


[error] 33-33: too many spaces after hyphen

(hyphens)

🤖 Prompt for AI Agents
In .github/workflows/android-ci.yml between lines 20 and 37, the indentation
after hyphens uses three spaces which triggers lint warnings from actionlint and
yamllint. To fix this, adjust all list item hyphens to be followed by a single
space instead of three spaces throughout these lines to comply with linting
rules and remove the warnings.

- name: Generate local.properties
run: |
echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties

Comment on lines +39 to +41
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Secrets가 문자열 그대로 출력됩니다 – 따옴표를 제거하세요.

echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties
작업 스크립트 내부에서 단일 따옴표로 감싸면 GitHub Actions 템플릿 치환이 일어나지 않아 파일에 리터럴 \${{ secrets.LOCAL_PROPERTIES }} 문자열이 기록됩니다.
빌드 시 local.properties 가 제대로 주입되지 않아 CI 전부가 실패할 수 있습니다.

-echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties
+echo "${{ secrets.LOCAL_PROPERTIES }}" > ./local.properties

• 따옴표를 이중 따옴표로 바꾸고 > 를 사용해 불필요한 중복 추가를 방지하세요.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
run: |
echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties
run: |
- echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties
+ echo "${{ secrets.LOCAL_PROPERTIES }}" > ./local.properties
🤖 Prompt for AI Agents
In .github/workflows/android-ci.yml around lines 39 to 41, the secret
LOCAL_PROPERTIES is enclosed in single quotes, causing the literal string '${{
secrets.LOCAL_PROPERTIES }}' to be written instead of its value. Replace the
single quotes with double quotes and use a single '>' redirection operator to
write the secret's actual content to local.properties without appending
duplicates.

Comment on lines +38 to +41
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

local.properties 생성 시 >> 대신 > 사용 권장

>> 는 파일이 이미 존재할 경우 뒤에 덧붙여 중복 키를 만들 수 있습니다.
한 번만 작성되는 CI 컨텍스트라면 단순 > 로 덮어쓰는 편이 안전합니다.

-                    echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties
+                    echo '${{ secrets.LOCAL_PROPERTIES }}' >  ./local.properties
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Generate local.properties
run: |
echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties
- name: Generate local.properties
run: |
echo '${{ secrets.LOCAL_PROPERTIES }}' > ./local.properties
🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 38-38: too many spaces after hyphen

(hyphens)

🤖 Prompt for AI Agents
In .github/workflows/android-ci.yml around lines 38 to 41, the script uses '>>'
to append to local.properties, which can cause duplicate entries if the file
exists. Replace '>>' with '>' to overwrite the file instead, ensuring
local.properties is created cleanly each time without duplicate keys.

- name: Code style checks
run: |
./gradlew ktlintCheck detekt

- name: Run build
Comment on lines +21 to +46
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

YAML 스타일: - 뒤 공백을 한 칸으로 줄여 가독성을 높이세요.

- name: 처럼 하이픈 뒤에 3 칸 이상 공백이 있어 YAMLlint 오류가 발생합니다. 표준 예시:

-            -   name: Checkout
+            - name: Checkout

모든 step‐블록에 동일하게 적용해 경고를 제거할 수 있습니다.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Checkout
uses: actions/checkout@v4
- name: Setup JDK 17
uses: actions/setup-java@v4
with:
distribution: 'corretto'
java-version: 17
- name: Setup Android SDK
uses: android-actions/setup-android@v2
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
with:
gradle-home-cache-cleanup: true
- name: Generate local.properties
run: |
echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties
- name: Code style checks
run: |
./gradlew ktlintCheck detekt
- name: Run build
- name: Checkout
uses: actions/checkout@v4
- name: Setup JDK 17
uses: actions/setup-java@v4
with:
distribution: 'corretto'
java-version: 17
- name: Setup Android SDK
uses: android-actions/setup-android@v2
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
with:
gradle-home-cache-cleanup: true
- name: Generate local.properties
run: |
echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties
- name: Code style checks
run: |
./gradlew ktlintCheck detekt
- name: Run build
🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 21-21: too many spaces after hyphen

(hyphens)


[error] 24-24: too many spaces after hyphen

(hyphens)


[error] 30-30: too many spaces after hyphen

(hyphens)


[error] 33-33: too many spaces after hyphen

(hyphens)


[error] 38-38: too many spaces after hyphen

(hyphens)


[error] 42-42: too many spaces after hyphen

(hyphens)


[error] 46-46: too many spaces after hyphen

(hyphens)

🤖 Prompt for AI Agents
In .github/workflows/android-ci.yml from lines 21 to 46, the YAML syntax uses
multiple spaces after the dash in step definitions (e.g., '-   name:'), causing
YAML lint errors. Fix this by reducing the spaces after each dash to exactly one
space (e.g., '- name:') for all steps to improve readability and comply with
YAML standards.

run: ./gradlew buildDebug --stacktrace
Comment on lines +46 to +47
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

buildDebug 태스크는 존재하지 않을 가능성이 높습니다.

AGP 기본 태스크는 assembleDebug / bundleDebug 또는 상위 build 입니다.
./gradlew buildDebug 는 실패하여 CI 전체가 RED 로 끝날 수 있으니 확인 바랍니다.

-            -   name: Run build
-                run: ./gradlew buildDebug --stacktrace
+            -   name: Assemble debug APK
+                run: ./gradlew assembleDebug --stacktrace
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Run build
run: ./gradlew buildDebug --stacktrace
- name: Assemble debug APK
run: ./gradlew assembleDebug --stacktrace
🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 46-46: too many spaces after hyphen

(hyphens)

🤖 Prompt for AI Agents
In .github/workflows/android-ci.yml at lines 46 to 47, the current Gradle task
'buildDebug' likely does not exist and may cause the CI to fail. Replace
'buildDebug' with a valid task such as 'assembleDebug', 'bundleDebug', or simply
'build' to ensure the build step runs successfully without errors.

42 changes: 12 additions & 30 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,22 +1,11 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.booket.android.application)
alias(libs.plugins.booket.android.hilt)
alias(libs.plugins.booket.android.application.compose)
}

android {
namespace = "com.ninecraft.booket"
compileSdk = 35

defaultConfig {
applicationId = "com.ninecraft.booket"
minSdk = 28
targetSdk = 35
versionCode = 1
versionName = "1.0"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

buildTypes {
release {
Expand All @@ -27,15 +16,9 @@ android {
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
}

buildFeatures {
compose = true
buildConfig = true
}
}

Expand All @@ -45,15 +28,14 @@ dependencies {
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.ui)
implementation(libs.androidx.ui.graphics)
implementation(libs.androidx.ui.tooling.preview)
implementation(libs.androidx.material3)
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.ui.graphics)
implementation(libs.androidx.compose.ui.tooling.preview)
implementation(libs.androidx.compose.material3)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.ui.test.junit4)
debugImplementation(libs.androidx.ui.tooling)
debugImplementation(libs.androidx.ui.test.manifest)
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
debugImplementation(libs.androidx.compose.ui.tooling)
debugImplementation(libs.androidx.compose.ui.test.manifest)
}
52 changes: 52 additions & 0 deletions build-logic/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
@Suppress("DSL_SCOPE_VIOLATION")

plugins {
`kotlin-dsl`
alias(libs.plugins.gradle.dependency.handler.extensions)
}

group = "com.ninecraft.booket.buildlogic"

dependencies {
compileOnly(libs.android.gradle.plugin)
compileOnly(libs.kotlin.gradle.plugin)
implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location))
}

gradlePlugin {
val conventionPluginClasses = listOf(
"android.application" to "AndroidApplicationConventionPlugin",
"android.application.compose" to "AndroidApplicationComposeConventionPlugin",
"android.library" to "AndroidLibraryConventionPlugin",
"android.library.compose" to "AndroidLibraryComposeConventionPlugin",
"android.feature" to "AndroidFeatureConventionPlugin",
"android.hilt" to "AndroidHiltConventionPlugin",
"jvm-library" to "JvmLibraryConventionPlugin",
"kotlin-library-serialization" to "KotlinLibrarySerializationConventionPlugin",
)
Comment on lines +17 to +26
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

플러그인 구현 클래스는 FQCN(풀 패키지 경로)로 지정해야 합니다

implementationClass에는 패키지명이 포함된 완전한 클래스명을 써야 Gradle Plugin-Classpath에서 올바르게 찾아집니다.
현재 "AndroidApplicationConventionPlugin" 등 단순 클래스명만 전달하여, 패키지를 가진 실제 클래스(com.ninecraft.booket.convention.AndroidApplicationConventionPlugin 등)를 찾지 못해 플러그인 로딩 실패가 발생할 수 있습니다.

- "android.application" to "AndroidApplicationConventionPlugin",
+ "android.application" to "com.ninecraft.booket.convention.AndroidApplicationConventionPlugin",

같은 방식으로 목록 전반을 수정해 주세요.

🤖 Prompt for AI Agents
In build-logic/build.gradle.kts around lines 17 to 26, the plugin implementation
class names are specified without their full package paths, which causes Gradle
to fail to locate them. Update each class name in the conventionPluginClasses
list to use the fully qualified class name (including the package), such as
"com.ninecraft.booket.convention.AndroidApplicationConventionPlugin" instead of
just "AndroidApplicationConventionPlugin", for all entries to ensure proper
plugin loading.


plugins {
conventionPluginClasses.forEach { pluginClass ->
pluginRegister(pluginClass)
}
}
}

java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(17))
}
}

kotlin {
jvmToolchain(17)
}

// Pair<PluginName, ClassName>
fun NamedDomainObjectContainer<PluginDeclaration>.pluginRegister(data: Pair<String, String>) {
val (pluginName, className) = data
register(pluginName) {
id = "booket.$pluginName"
implementationClass = className
}
}
14 changes: 14 additions & 0 deletions build-logic/settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
versionCatalogs {
create("libs") {
from(files("../gradle/libs.versions.toml"))
}
}
}

rootProject.name = "build-logic"
21 changes: 21 additions & 0 deletions build-logic/src/main/java/AndroidApplicationComposeConvention.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import com.android.build.api.dsl.ApplicationExtension
import com.ninecraft.booket.convention.Plugins
import com.ninecraft.booket.convention.applyPlugins
import com.ninecraft.booket.convention.configureCompose
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure

Comment on lines +1 to +
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

패키지 선언 누락 – 기본 패키지 사용은 피해주세요
현재 파일에 package 선언이 없습니다. 기본 패키지(루트 패키지)에 클래스를 두면 Gradle plugin ID 매핑·리플렉션 시 FQN 충돌 가능성이 높고, 다른 convention 파일과도 구조적으로 일관성이 떨어집니다. 모든 plugin 클래스는 명시적 패키지(예: com.ninecraft.booket.convention) 아래에 두는 것이 안전합니다.

+package com.ninecraft.booket.convention
+
 import com.android.build.api.dsl.ApplicationExtension
 ...
🤖 Prompt for AI Agents
In build-logic/src/main/java/AndroidApplicationComposeConvention.kt at the top
of the file before imports, add an explicit package declaration such as 'package
com.ninecraft.booket.convention' to avoid using the default root package. This
ensures proper Gradle plugin ID mapping, prevents FQN conflicts, and maintains
structural consistency with other convention files.

internal class AndroidApplicationComposeConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
applyPlugins(
Plugins.ANDROID_APPLICATION,
)

extensions.configure<ApplicationExtension> {
configureCompose(this)
}
}
}
}
29 changes: 29 additions & 0 deletions build-logic/src/main/java/AndroidApplicationConventionPlugin.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import com.android.build.api.dsl.ApplicationExtension
import com.ninecraft.booket.convention.ApplicationConstants
import com.ninecraft.booket.convention.Plugins
import com.ninecraft.booket.convention.applyPlugins
import com.ninecraft.booket.convention.configureAndroid
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure

Comment on lines +1 to +9
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

패키지 선언 누락으로 컴파일 오류 발생

다른 파일과 동일한 패키지를 추가해 주세요.

+package com.ninecraft.booket.convention
+
 import com.android.build.api.dsl.ApplicationExtension
🤖 Prompt for AI Agents
In build-logic/src/main/java/AndroidApplicationConventionPlugin.kt at the
beginning of the file (lines 1 to 9), add the missing package declaration
matching the package used in other files to resolve the compilation error caused
by the missing package statement.

internal class AndroidApplicationConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
applyPlugins(
Plugins.ANDROID_APPLICATION,
Plugins.KOTLIN_ANDROID,
)

extensions.configure<ApplicationExtension> {
configureAndroid(this)

defaultConfig {
targetSdk = ApplicationConstants.targetSdk
versionName = ApplicationConstants.versionName
versionCode = ApplicationConstants.versionCode
}
}
}
}
}
20 changes: 20 additions & 0 deletions build-logic/src/main/java/AndroidFeatureConventionPlugin.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import com.ninecraft.booket.convention.applyPlugins
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.dependencies

internal class AndroidFeatureConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
applyPlugins(
"booket-android-library",
"booket-android-hilt",
"booket-android-library-compose",
)

dependencies {

}
}
}
}
24 changes: 24 additions & 0 deletions build-logic/src/main/java/AndroidHiltConventionPlugin.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import com.ninecraft.booket.convention.Plugins
import com.ninecraft.booket.convention.applyPlugins
import com.ninecraft.booket.convention.implementation
import com.ninecraft.booket.convention.ksp
import com.ninecraft.booket.convention.libs
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.dependencies

internal class AndroidHiltConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
applyPlugins(
Plugins.HILT,
Plugins.KSP,
)

dependencies {
implementation(libs.hilt.android)
ksp(libs.hilt.compiler)
}
Comment on lines +18 to +21
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

테스트 소스셋용 KSP/의존성 추가 검토

Hilt 컴파일러가 androidTest·test 소스셋에서도 필요할 수 있습니다. 누락 시 테스트 코드 내 @HiltAndroidTest 등이 실패합니다.

             dependencies {
                 implementation(libs.hilt.android)
-                ksp(libs.hilt.compiler)
+                ksp(libs.hilt.compiler)
+                kspAndroidTest(libs.hilt.compiler)
+                kspTest(libs.hilt.compiler)
             }
🤖 Prompt for AI Agents
In build-logic/src/main/java/AndroidHiltConventionPlugin.kt around lines 18 to
21, the current dependencies only include Hilt for the main source set. To fix
the issue, add the Hilt compiler KSP and Hilt Android implementation
dependencies also to the `androidTest` and `test` source sets to ensure
annotations like @HiltAndroidTest work correctly in test code.

}
}
}
21 changes: 21 additions & 0 deletions build-logic/src/main/java/AndroidLibraryComposeConventionPlugin.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import com.android.build.gradle.LibraryExtension
import com.ninecraft.booket.convention.Plugins
import com.ninecraft.booket.convention.applyPlugins
import com.ninecraft.booket.convention.configureCompose
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure

class AndroidLibraryComposeConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
applyPlugins(
Plugins.ANDROID_LIBRARY,
)

extensions.configure<LibraryExtension> {
configureCompose(this)
}
}
}
}
22 changes: 22 additions & 0 deletions build-logic/src/main/java/AndroidLibraryConventionPlugin.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import com.android.build.gradle.LibraryExtension
import com.ninecraft.booket.convention.Plugins
import org.gradle.api.Plugin
import org.gradle.api.Project
import com.ninecraft.booket.convention.applyPlugins
import com.ninecraft.booket.convention.configureAndroid
import org.gradle.kotlin.dsl.configure

internal class AndroidLibraryConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
applyPlugins(
Plugins.ANDROID_LIBRARY,
Plugins.KOTLIN_ANDROID,
)

extensions.configure<LibraryExtension> {
configureAndroid(this)
}
}
}
}
35 changes: 35 additions & 0 deletions build-logic/src/main/java/JvmLibraryConventionPlugin.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import com.ninecraft.booket.convention.ApplicationConstants
import com.ninecraft.booket.convention.Plugins
import com.ninecraft.booket.convention.applyPlugins
import com.ninecraft.booket.convention.implementation
import com.ninecraft.booket.convention.libs
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.plugins.JavaPluginExtension
Comment on lines +1 to +8
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

패키지 선언 누락
다른 convention 플러그인들과 동일한 패키지로 이동해 주세요.

🤖 Prompt for AI Agents
In build-logic/src/main/java/JvmLibraryConventionPlugin.kt at the top of the
file (lines 1 to 8), add the appropriate package declaration to match the
package used by other convention plugins. This involves inserting the correct
package statement before the import statements to ensure consistency and proper
organization within the project.

import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.dependencies
import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension

internal class JvmLibraryConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
applyPlugins(
Plugins.JAVA_LIBRARY,
Plugins.KOTLIN_JVM,
)

extensions.configure<JavaPluginExtension> {
sourceCompatibility = ApplicationConstants.javaVersion
targetCompatibility = ApplicationConstants.javaVersion
}

extensions.configure<KotlinProjectExtension> {
jvmToolchain(ApplicationConstants.javaVersionInt)
}

dependencies {
implementation(libs.detekt.formatting)
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import com.ninecraft.booket.convention.Plugins
import com.ninecraft.booket.convention.applyPlugins
import com.ninecraft.booket.convention.implementation
import com.ninecraft.booket.convention.libs
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.dependencies

Comment on lines +1 to +8
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

패키지 선언 누락
이 파일도 루트 패키지에 위치해 있습니다. 다른 convention 플러그인과 동일한 패키지 네이밍을 적용해 주세요.

🤖 Prompt for AI Agents
In build-logic/src/main/java/KotlinLibrarySerializationConventionPlugin.kt at
the top of the file before the imports, add the appropriate package declaration
matching the root package used by other convention plugins to ensure consistent
package naming across the project.

internal class KotlinLibrarySerializationConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
applyPlugins(
Plugins.KOTLINX_SERIALIZATION
)

dependencies {
implementation(libs.kotlinx.serialization.json)
}
}
}
}
Loading
Loading