[java] Gradle에서 transitive = true는 정확히 무엇입니까 (wrt crashlytics)?

Gradle transitive = true은 정확히 무엇을합니까? Gradle 문서 에서 명확하지 않습니다 . 이것은 compilewithin 의 맥락에 있습니다 build.gradle. 내 경우에는 안드로이드의 crashlytics에 의존하고 있습니다.

compile('com.crashlytics.sdk.android:crashlytics:2.2.2@aar') {
    transitive = true;
}

여러 Gradle 문서 ( herehere )는 “전이”가 기본값으로 true임을 나타냅니다. 그러나 제거 transitive = true하면 전이 의존성이 가져 오지 않습니다 (특히 KitGroup).

class file for io.fabric.sdk.android.KitGroup not found

문서는 기본값이 true라고 말하지만 실제 동작은 반대입니다.

Gradle 2.2.1을 실행 중입니다. 아마도 행동이 2.2와 2.4 사이에서 바뀌었을까요?

편집 : gradle을 사용하여 aar 라이브러리에 대해 관련 전이 종속성이 해결되지 않음



답변

@aar표기법을 사용하고 있습니다.
즉, aar 아티팩트 만 다운로드하고 종속성은 다운로드하지 않으려 고합니다.
문서 부분을 ​​확인할 수 있습니다 : 섹션을
확인 1.4.1.2. Artifact only notation하십시오.

이슈 전용 표기법은 지정된 확장자를 가진 이슈 파일 만 다운로드하는 모듈 종속성을 만듭니다. 기존 모듈 설명자는 무시 됩니다.

@aar종속성을 다운로드 하려면 표기법을 사용 하여을 추가해야합니다 transitive=true.

@aar를 생략하면 전이 속성을 추가하지 않고 작동해야합니다.


답변

보다 일반적인 메모에서 : 설정 transitive = false상의 crashlytics라이브러리 원인에 필요한 모든 라이브러리 무시 Gradle을 crashlytics(= “과도 라이브러리”)을 다운로드하고이를 연결하지.

필요한 라이브러리를 프로젝트에 수동으로 추가하거나 다른 종속성에 의해 추가 된 다른 임시 라이브러리에 의존해야합니다.

gradle의 기본값은 transitive = true입니다.

여기에 예와 전체 설명 : http://www.devsbedevin.net/android-understanding-gradle-dependencies-and-resolving-conflicts/


답변

내 생각에 수동으로 참조하는 Crashlytics 아티팩트는 종속성을 전 이적 이지 않은 것으로 지정 transitive=false하여 기본적으로 이러한 종속성을 가져 오지 않아도됩니다. 이것이 바로 당신이 반대 행동을하는 이유입니다. 예를 들어 일부 개발자는 모든 Google Play 서비스 또는 Crashlytics가 제공하는 다른 도구를 사용하고 싶지 않을 수 있습니다.

따라서 Gradle을 제거하면 Gradle은 더 이상 종속성을 가져 오지 않으며 빌드하지 못합니다. 필요한 경우 해당 종속성을 수동으로 지정할 수 있습니다.

, 가장 큰 문제는 Crashlytics 아티팩트를 직접 참조해서는 안된다는 것입니다. Fabric을 사용하고 결과적으로 Crashlytics를 가져와야합니다. https://dev.twitter.com/fabric/ 안드로이드 / 통합


답변

전이 종속성을 포함하거나 제외하여이 종속성을 해결해야하는지 여부를 설정합니다. 이 종속성에 속하는 아티팩트는 다른 아티팩트에 종속 될 수 있습니다. 후자를 전이 의존성이라고합니다.


답변

Gradle은 기본적으로 전이 의존성을 따릅니다. 특정 라이브러리에 대해이를 끄려면 전이 플래그를 사용하십시오.

전이 플래그의 값을 false로 변경하면 전이 종속성의 다운로드가 방지되므로 필요한 모든 것을 추가해야합니다. 추가 종속성없이 모듈 jar 만 원하는 경우이를 지정할 수도 있습니다.


답변

transitive전이성을 제어합니다. Gradle은 일반적으로 그렇지 않은 경우를 제외하고 기본적으로 전 이적입니다. 전이성 및 분류기에 버그가 있습니다 ( https://issues.gradle.org/browse/GRADLE-3188 참조) .


답변