Android 프로젝트가 있고 구성 요소 중 하나를 라이브러리로 만들 계획입니다. Android 종속성이 필요하지 않으므로 이것은 Java 라이브러리 (jar)입니다.
문제는이 라이브러리가 RxJava에 의존한다는 것입니다. 그러나 라이브러리 클라이언트 가 사용할 RxJava 버전에 종속되기를 원 하며 라이브러리의 build.gradle
.
Gradle Default 종속성 이 갈 길이 라고 생각 했지만 RxJava 종속성을 전혀 제공하지 않으며 라이브러리 모듈이 빌드되지 않습니다.
내 build.gradle
:
apply plugin: 'java'
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
configurations.all {
pluginTool {
defaultDependencies { dependencies ->
dependencies.add(this.project.dependencies.create("io.reactivex:rxjava:1.1.0"))
}
}
}
sourceCompatibility = "1.7"
targetCompatibility = "1.7"
문제는이 라이브러리가 RxJava에 의존한다는 것입니다. 그러나 라이브러리 클라이언트 가 사용할 RxJava 버전에 종속되기를 원 하며 라이브러리의
build.gradle
.
종속성이 작동하는 방식이 아니기 때문에 가능한지 모르겠습니다. Maven Transitive Dependencies 는이 문제를 약간 설명합니다.
예를 들어, 라이브러리를 만들고 주어진 RxJava 버전을 사용했습니다 vn
. 그것은 암시 적으로 당신의 lib가 vn
존재하지 않는 일부 기능을 사용 vn-1
하고 바라건대 vn+1
나중에 더 이상 사용되지 않을 것임을 의미 합니다. lib 클라이언트가 RxJava 버전을 선택할 수 있다면 임의로 선택할 수 vn-1
있으며 코드가 작동하지 않습니다. 당신은 의존도가 vn
높고 당신의 라이브러리를 사용하는 사람은 누구나 그것을 알고 있어야합니다.
lib에 명시 적 종속성을 제공하는 데 문제가 없습니다 build.gradle
. 실제로 종속성을 나열하면 Gradle이 종속성 그래프를 해결하고 충돌 및 모든 것을 처리하는 데 도움이됩니다. Gradle이 수행하는 작업은 다음과 같습니다. https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html
마지막으로 lib 클라이언트에 대한 종속성 위임을 수행하는 방법을 찾았더라도 런타임 중에 애플리케이션이 충돌 할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다