code

Gradle : 클래스 경로와 컴파일 종속성의 차이점은 무엇입니까?

codestyles 2020. 11. 25. 07:59
반응형

Gradle : 클래스 경로와 컴파일 종속성의 차이점은 무엇입니까?


내 프로젝트에 종속성을 추가 할 때 나는 결코 확실히 내가 그들을 제공해야 접두어 무엇이다, 예를 들어, "classpath"또는"compile".

예를 들어, 아래의 종속성은 컴파일 시간 또는 클래스 경로 여야합니까?

또한 내 애플리케이션 build.gradle 또는 모듈 별 build.gradle에 있어야합니까?

현재 build.gradle (애플리케이션 수준) :

apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.hibernate:hibernate-core:5.0.5.Final'
    compile 'mysql:mysql-connector-java:5.1.38'
} 

나는 당신이 참조 compile하고 classpath있고 dependencies {}블록 내에 있다고 추측 할 것 입니다. 그렇다면 종속성 구성 입니다.

구성은 단순히 명명 된 종속성 집합입니다.

compile구성은 자바 플러그인에 의해 생성된다. classpath구성은 일반적으로 보이는 buildSrc {}사람이 종속성을 선언해야 블록 build.gradle, 자체 (플러그 용 아마도).


만약 buildscript 자체가 실행 뭔가, 사용이 필요 클래스 경로를 .

프로젝트를 실행해야하는 경우 compile을 사용하십시오 .

buildscript{}블록은 build.gradle 자체이다.

다중 프로젝트 빌드의 경우 최상위 빌드 파일은 루트 프로젝트 용이고 특정 빌드 파일은 하위 프로젝트 (모듈) 용입니다.

모든 하위 프로젝트 / 모듈에 공통적 인 구성 옵션을 추가 할 수있는 최상위 빌드 파일입니다.

애플리케이션 종속성을 최상위 빌드 파일에 배치하지 마십시오. 개별 모듈 build.gradle 파일에 속합니다.


내가 올바르게 이해한다면 Project.dependencies스크립트 블록과 스크립트 블록을 혼동하는 것입니다 Project.buildscript.dependencies(이 질문에 도달했을 때와 마찬가지로).

나는 내가 찾은 것으로 대답하려고 노력할 것이다.

이미 Project.dependencies스크립트 블록에 익숙해야한다고 생각합니다 . 이 블록에서는 소스 코드에 필요한 종속성을 선언합니다. 프로젝트에 필요한 종속성을 선언하는 방법에는 여러 가지가 있습니다. Gradle 자습서 : 종속성 유형을 참조하십시오 . 이 문제와 가장 관련이있는 부분 만 언급하겠습니다.

compile 'org.hibernate:hibernate-core:5.0.5.Final'모듈 종속성 선언입니다. 컴파일 구성 (이제는 구현 구성에서 더 이상 사용되지 않습니다.)은 단지 Implementation only dependencies.어떤 유형의 종속성인지를 설명하는 키워드가 아닙니다 (여기서 유형별로 저는 자습서에 정의 된 세 가지 유형, 즉 모듈, 파일 및 프로젝트.)

에서 Gradle을 자습서 : 빌드 로직을 구성하기 는 말합니다 :

빌드 스크립트에서 외부 라이브러리를 사용해야하는 경우 빌드 스크립트 자체의 스크립트 클래스 경로에 추가 할 수 있습니다. buildscript () 메소드를 사용하여 빌드 스크립트 클래스 경로를 선언하는 클로저를 전달합니다.

이것은 예를 들어 Java 컴파일 클래스 경로를 선언하는 것과 동일한 방법입니다. 프로젝트 종속성을 제외하고 종속성 유형에 설명 된 모든 종속성 유형을 사용할 수 있습니다.

빌드 스크립트 클래스 경로를 선언했으면 클래스 경로의 다른 클래스처럼 빌드 스크립트의 클래스를 사용할 수 있습니다.

이제 상황이 명확 해지기를 바랍니다.

으로 classpath "com.android.tools.build:gradle:${Versions.android_gradle_plugin}"우리가 설정하는 classpath방법을 함께 com.android.tools.build:gradle:${Versions.android_gradle_plugin}하는 빌드 스크립트 자체보다는 프로젝트의 소스에서 사용되는 모듈 종속성입니다.

반면에 compile 'org.hibernate:hibernate-core:5.0.5.Final'compile configuration 을 사용하여 프로젝트에 필요한 모듈 종속성을 선언 합니다 .

TL; DR 다음 classpath, compile그리고 implementation서로 다른 상황에서 종속에 대해 사용할 수있는 모든 키워드입니다. 전자는 빌드 스크립트에 종속성을 전달하려는 경우 사용되며 후자는 선언하려는 구성 중 하나입니다 .

참고 URL : https://stackoverflow.com/questions/34286407/gradle-what-is-the-difference-between-classpath-and-compile-dependencies

반응형