You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
domain·core:model 을 순수 JVM 모듈로 — 레이어 경계를 테스트 아닌 타입으로 강제 (#1150 상위안) #1151
domain 모듈이 afternote.android.domain → afternote.android.library 기반이라 안드로이드 SDK 가 클래스패스에 있습니다. 그래서 import android.net.Uri 가 컴파일됩니다. #1150 이 konsist 테스트로 막자는 것이고, 이 이슈는 타입 시스템으로 막자는 쪽입니다 — JVM 모듈이면 애초에 컴파일이 안 됩니다.
실측 — 생각보다 가깝습니다
항목
실측
domain 7개 모듈의 android.* 임포트
0건
domain 의 androidx.* 임포트
androidx.paging.PagingData 4건
domain 이 쓰는 DI
javax.inject.Inject 4건 + @Singleton 1건 — Hilt 플러그인 불필요 (생성자 주입은 :app 의 KSP 가 처리)
core:model 소스
4파일, android.* 임포트 0건
순수 JVM 선례
konsist 모듈 (java-library + kotlin.jvm)
순서가 강제됩니다
java-library 모듈은 android-library 를 의존할 수 없습니다. domain 이 :core:model 을 물고 있고 그게 android-library 라, core:model 이 먼저 가야 합니다.
core:model (android.library + hilt) ← 먼저 JVM 으로
└ core:domain
└ feature/{afternote,receiver,timeletter,mindrecord,setting,onboarding}/domain
반대로 core:model 을 의존하는 11개 모듈(presentation·data·app)은 그대로 둡니다 — 안드로이드 모듈이 JVM 모듈을 의존하는 건 정상입니다.
🚀 해야할 일
core:model → java-library + kotlin.jvm. Hilt 플러그인 제거 (쓰는 곳 확인 후)
AndroidDomainConventionPlugin → JVM 판 컨벤션 플러그인 신설. afternote.android.hilt 대신 javax.inject 만 물린다
domain 7개 모듈 전환
androidx.paging:paging-common 이 jvm 변종으로 해석되는지 확인 — 현재는 paging-common.aar(KMP 의 android 타깃)로 붙고 있고, 그 안에 android.util.Log 사용처가 1곳 있다. JVM 모듈에선 jvm 변종이 붙어야 한다
namespace / AndroidManifest 제거, testDebugUnitTest → test 로 바뀌는 태스크 이름을 CI·kover 설정에서 갱신
changed the title [-]refactor(core): domain·core:model 을 순수 JVM 모듈로 — 레이어 경계를 테스트 아닌 타입으로 강제 (#1150 상위안)[/-][+]domain·core:model 을 순수 JVM 모듈로 — 레이어 경계를 테스트 아닌 타입으로 강제 (#1150 상위안)[/+]on Aug 28, 2026
Activity
OnlyReadOneBook commentedon Aug 27, 2026
도메인 소유권과 독립 머지 가능성을 기준으로 #1151을 분리했습니다.
core:model/core:domain,afternote-domain,onboarding-domain1차 전환 (Part of #1151)mindrecord-domain— @Sadturtleman 담당setting-domain,timeletter-domain— @koongmai 담당receiver-domain— 저장소 담당표에 소유자가 없어 미배정#1307은 기존
afternote.android.domain을 유지하며 타 담당 도메인 파일을 변경하지 않습니다. #1151은 세 후속 이슈가 완료될 때까지 우산 이슈로 열어 둡니다.[-]refactor(core): domain·core:model 을 순수 JVM 모듈로 — 레이어 경계를 테스트 아닌 타입으로 강제 (#1150 상위안)[/-][+]domain·core:model 을 순수 JVM 모듈로 — 레이어 경계를 테스트 아닌 타입으로 강제 (#1150 상위안)[/+]