본문
[2018.09.27] 29. Gradle 실습1 - Multi Build
참조
도입
이번 포스팅에서는 Gradle의 Multi-build에 대해 실습할 예정이다.
프로젝트에서 많은 설정 부분이 자동화되어 있다.
그것을 설정하는 시스템 중 하나가 Gradle 시스템이기 때문에 Gradle을 공부하며 정리할 예정이다.
삽질 포인트
결론적으로, Multi-build(Java, Kotlin)를 완료 후 빌드 결과로 class 파일을 실행해 결과를 확인할 예정이었다.
구분 |
Gradle build 여부 | java 명령어로 실행 가능 여부 |
Java file |
O | O |
Kotlin file |
O | X |
Java, Kotlin file 모두 Gradle를 통해 build가 완료되었다.
하지만, java 명령어를 통해 kotlin class file은 실행되지 않았다. 아래처럼 오류 발생
1 2 3 4 5 6 7 8 9 | /build/classes/kotlin/main > java HelloKotlinKt Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics at HelloKotlinKt.main(HelloKotlin.kt) Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 1 more | cs |
원인: Kotlin은 Java와 호환이되기 때문에 당연히 build가 완료된 class 파일은 java 명령어를 통해 실행이 가능하다고 생각했다.
해결책: Kotlin 명령어로 실행하면 해결
그러나, 여기서 의문점은 kotlin의 build 결과, java의 build 결과가 모두 class 파일이니 java 명령어로도, kotlin 명령어로도 모두 실행 가능해야하는 것 아닐까?
TODO: 이것은 추후 확인해봐야겠다.
실습
Step1. gradle 프로젝트 생성 (명령어: gradle init)
1 2 3 4 5 6 7 8 9 | └── gradle ├── build ├── build.gradle // 해당 프로젝트의 의존성, 플러그인, 스크립트 등 설정 ├── gradle // 설정 파일 wrapper로 감싸 있어 OS에 의존성 X ├── gradlew // 리눅스 계열에서 실행 가능한 파일 ├── gradlew.bat // 윈도우에서 실행 가능한 bat 파일 ├── java // 하위 프로젝트 1 ├── kotlin // 하위 프로젝트 2 └── settings.gradle // 프로젝트 간 관계 설정 | cs |
Step2. 최상위 프로젝트의 build.gradle 및 setting.gradle 설정
build.gradle |
setting.gradle |
||||||
|
|
Step3. 하위 프로젝트의 build.gradle 설정
a. Java
build.gradle |
|||
|
b. Kotlin
build.gradle |
|||
|
Step4. 코드 작성
a. Java
|
b. Kotlin
|
Step5. 결과 확인
a. Java
|
b. Kotlin
|
#gradle #multi build #multi project #멀티 빌드
'컴퓨터 > 이론: 개발' 카테고리의 다른 글
[2019.01.02] 30. TLS 용어 정리 (0) | 2019.01.02 |
---|---|
[2018.10.09] 01. Suninatas_15번 (0) | 2018.10.09 |
[2018.07.22] 09. Android Studio - Configuration on demand (0) | 2018.07.22 |
[2018.06.06] 08. Android Studio -CompileDebugJavaWithJavac, CompileDebugKotlin (0) | 2018.06.06 |
[2018.05.21] 07. Android Studio - NOT enough memory (0) | 2018.05.21 |
댓글