Gradle의 컴파일 및 런타임 구성의 차이점


102

내 질문은 약간 흔하지 만 Gradle 과도 연결되어 있습니다.

컴파일 및 런타임 구성이 필요한 이유는 무엇입니까?

무언가를 컴파일 할 때 Java 클래스를 바이트 코드로 변환하기 위해 아티팩트가 필요하므로 컴파일 구성이 필요하지만 런타임 구성이 필요한 이유는 JVM에서 애플리케이션을 실행하기 위해 다른 것이 필요합니까?

바보 같이 들리면 미안하지만 이해가 안 돼요

답변:


149

가장 일반적인 경우, 컴파일 타임에 필요한 아티팩트는 런타임에 필요한 아티팩트의 하위 집합입니다. 예를 들어,라는 프로그램이 library를 사용 하고 library는 내부적으로 library를 app사용 한다고 가정 해 보겠습니다 . 그런 다음 컴파일하는 데만 필요 하지만 및 둘 다 실행하는 데 필요합니다. 이것이 기본적으로 Gradle의 구성 에 입력 한 모든 내용이 구성에도 표시 되지만 그 반대는 사실이 아닙니다.foofoo barfooappfoobarcompileruntime


20
이것이 gradle.org/docs/current/userguide/dependency_management.html 에서 명시 적으로 언급되지 않은 것이 아쉽습니다 . 그들은 ... 명시 적으로 그 의미를 진술하지 않고 컴파일 및 런타임 모두 사용
silasdavis

2
@silasdavis 문서에서 차이점을 설명합니다 : gradle.org/docs/current/userguide/… 8.3. 종속성 구성
angelcervera

@angelcervera 아 그렇습니다. 8. 종속성 관리 기본 사항, 51. 종속성 관리. 왜 두 개의 섹션이 있는지 알 수 있지만 후자가 전자를 참조하면 좋을 것입니다. 나는 51에 착륙했고 그것이 완전한 계정을 줄 것이라고 기대했습니다.
silasdavis 2014-10-27

@silasdavis 맞아요. 문서의 다른 섹션에 대해서도 동일합니다. 나는 Z.에 대한 모든 문서를 읽을 같은 자유 시간을 취해야합니다
angelcervera

1
@Peter Niederwieser 컴파일 작업이 런타임과 동일한 종속성을 표시하는 경우 컴파일이 아닌 런타임을 사용하는 시나리오는 무엇입니까?
rj2700
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.