JPMS을 사용하면 빌드 툴 없이 모듈 구성이 가능하다
강사님 안녕하세요 !
자바 9 모듈 학습을 하다가 의문점이 생겨서 질문을 드립니다.
JPMS을 사용하면 빌드 툴 없이 모듈 구성이 가능하다라는 말이 잘 이해가 되지 않습니다.
plugins {
id 'java-library'
}
group = 'com.example'
version = '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
api(project(":domain"))
testImplementation platform('org.junit:junit-bom:5.10.0')
testImplementation 'org.junit.jupiter:junit-jupiter'
}
test {
useJUnitPlatform()
}
이렇게 build.gradle 파일 내에 추가로 설정을 해야 접근이 가능하게 되는데 이거는 gradle 빌드를 사용한게 아닌건가요 ?
testImplementation platform('org.junit:junit-bom:5.10.0')이렇게 maven을 통해서 가져오는 게 아니라서 빌드툴을 사용하지 않았다고 이해하면 될까요?
답변 1
1
안녕하세요! kamser님! 🙂
정말 좋은 질문 감사드립니다.
결론부터 말씀드리면, build.gradle 를 사용하게 되면 빌드 툴을 사용한게 맞습니다!
제가 말씀드린 "JPMS를 사용하면 빌드 툴 없이 모듈 구성이 가능하다"는 의미는 다음과 같은 의미에 가깝습니다! 🙂
빌드툴을 사용하지 않는다고 가정하면, JPMS가 있기 전에는 두 jar 파일을 classpath에 인식시켜 놓는 것만으로도 서로 클래스를 가져다 사용할 수 있었습니다.
(역설적으로 빌드 툴은 각각의 모듈이 서로 인식할 수 있도록 물리적인 위치를 조정해주는 역할을 자동으로 해주죠! 👍)
하지만 빌드툴을 사용하게 되면, JPMS를 이용해 서로 다른 두 jar 간의 다양한 관계를 설정하거나, 하위 jar 안의 어떤 패키지만을 노출할지 정할 수 있습니다.
jdk를 예로 보시면 편합니다!
https://github.com/openjdk/jdk
jdk에서는 gradle이나 maven 같은 빌드 툴을 사용하고 있지 않지만, 각각의 모듈을 module-info.java로 설정해준 덕분에 모듈 시스템을 적절히 이용할 수 있게 되었죠.
물론 Makefile이 물리적인 연결을 도와주고는 있습니다. 👍
물론 현실적으로 애플리케이션 개발자 입장에서는 빌드툴을 사용하지 않을 일이 거의 없다고 보시면 됩니다!
다만 JDK 입장에서는 JPMS의 등장이 조금 더 큰 의미를 갖는다 라는 느낌으로 봐주시면 될 것 같습니다.
또 궁금하신 점 생기시면 언제든 편하게 질문 남겨주세요.
감사합니다! 🙏
26년2회 실기기출은 언제쯤...
0
22
2
진짜화면이랑달라서못해먹겟어요먹겟어요
0
16
1
네이버 API | '검색 - 책' API 제공 중단
0
17
1
ArticleReadService 관련 질문
0
15
1
kafka 이벤트 발행 실패 시 at-least-once를 보장하는 방법이 궁금합니다.
1
38
1
이론 공부법 요약본 버전 업데이트 문의
0
18
2
domain에 @Entity 와 Repository를 함께 둔 이유가 궁금합니다
1
29
1
해당 프로젝트를 똑같이 따라하려니 spring installer가 버전이 17부터 가능하네요.
0
14
1
Part 2 듣기전 복습하던 중, 아키텍처에 관한 질문이 있습니다.
0
32
2
테스트는 인터페이스를 대상으로 만드는것에 대해 궁금한 점이 있습니다.
0
22
1
Jib 이미지 빌드에서 docker credential 관련으로 이슈가 있다면
1
60
1
리뉴얼 시기
0
39
2
스크립트에 대해 질문 있습니다.
1
54
1
같은 사용자가 연속된 중복 호출할 경우 어떻게 되는지 궁금합니다!
2
60
1
조건 검색 질문
0
32
1
JPA 엔티티로 만들었다고 기술종속이 아닌지에 대한 질문
0
50
3
클로드코드 명령어-대화&세션관리 수업 자료
0
40
1
잘지내시죠?
2
73
1
2강 예제 소스 실행 문의
0
129
3
12강 강의 챕터 제목에 오타가 있네요
1
171
1
14강 Map에 대해서 질문이 있습니다.
0
217
1
12강 AnimalDto에 대해서 질문이 있습니다.
1
208
1
compact constructor 질문이 있습니다.
1
219
1
2강 주요 키워드 정리 질문이 있습니다.
0
204
1





