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.