2013-05-22 3 views
61

제 질문은 약간 일반적이지만 Gradle에도 연결되어 있습니다.Gradle의 컴파일 및 런타임 구성의 차이점

왜 컴파일 및 런타임 구성이 필요합니까?

내가 컴파일 할 때 자바 클래스를 바이트 코드로 변환하기 위해 유물이 필요하므로 컴파일 구성이 필요하지만 런타임 구성이 필요한 이유가 JVM에서 내 응용 프로그램을 실행하는 데 필요한 이유가 무엇입니까?

미안하지만 어리석은 일이라면 미안하지만 이해가 안됩니다.

답변

91

가장 일반적인 경우 컴파일 타임에 필요한 아티팩트는 런타임에 필요한 아티팩트의 서브 세트입니다. 예를 들어, app이라는 프로그램이 라이브러리 foo을 사용하고 라이브러리 foo내부적으로 라이브러리 bar을 사용한다고 가정 해 보겠습니다. 그러면 app을 컴파일하는 데 foo 만 필요하지만 실행하려면 foobar이 모두 필요합니다. 이것이 기본적으로 Gradle의 compile 구성에 입력 한 모든 내용이 runtime 구성에서도 볼 수 있지만 그 반대는 사실이 아닙니다.

+10

수치심은 http://www.gradle.org/docs/current/userguide/dependency_management.html에 명시 적으로 언급되지 않았습니다. 이들은 컴파일러와 런타임 모두 명시 적으로 의미를 밝히지 않고 사용합니다 ... – silasdavis

+2

@silasdavis 문서에서 차이점에 대해 설명합니다. http://www.gradle.org/docs/current/userguide/userguide_single.html#configurations 8.3. 종속성 구성 – angelcervera

+0

@angelcervera 아 아 그래, 8. 종속성 관리 기본 사항 및 51. 종속성 관리. 두 섹션이있는 이유를 알 수 있지만 후자가 이전 섹션을 참조하면 좋을 것입니다. 나는 51 세에 착륙하여 완전한 계좌를 제공 할 것으로 예상한다. – silasdavis