Classpath란?
- 클래스나 jar파일이 존재하는 위치이다.
- Java 애플리케이션 실행 시 필요하다.
- JVM이
classpath
를 통해 파일 경로를 따라 클래스 파일을 찾아서 로드한다.
compileClasspath 와 runtimeClasspath
1. compileClasspath
- *.java 코드를 컴파일해서 *.class 파일로 만들 수 있게 하는 JDK에서 필요로 하는 라이브러리의 경로이다.
- 즉, 에러없이 컴파일 하기 위해 필요한 클래스와 jar의 위치를 나타낸다.
2. runtimeClasspath
- 컴파일된 자바 코드를 실행시킬 때 필요한 라이브러리의 경로이다.
- 즉, 애플리케이션이 정상적으로 실행되기 위해 필요한 클래스와 jar의 위치를 나타낸다.
의존성 구성
1. implementaion
- 의존성이 컴파일 시점과 런타임 시점 모두 필요할 때 사용된다.
2. compileOnly
- 컴파일 시에만 사용되고, 런타임 시에는 사용되지 않는다.
3. runtimeOnly
- 런타임 시에만 사용되고, 컴파일 시에는 사용되지 않는다.
4. annotationProcessor
- 컴파일 중에 사용되는 어노테이션 프로세서이다.
- 컴파일 시에만 사용되고, 런타임 시에는 사용되지 않는다.
참고
- https://giron.tistory.com/101
- https://bnzn2426.tistory.com/136
- https://effectivesquid.tistory.com/entry/%EC%9E%90%EB%B0%94-%ED%81%B4%EB%9E%98%EC%8A%A4%ED%8C%A8%EC%8A%A4classpath%EB%9E%80
- https://twinparadox.tistory.com/630
- https://blog.naver.com/PostView.nhn?blogId=adamdoha&logNo=222074878978
- https://docs.gradle.org/current/userguide/java_plugin.html#sec:java_plugin_and_dependency_management
- https://medium.com/twodigits/the-art-of-dependency-juggling-with-gradle-about-compile-and-implementation-pitfalls-52863bab31f2