![](/img/trans.png)
[英]IntelliJ and Android Gradle dependencies - unable to find module
[英]Android Gradle include module dependencies in another module
我正在使用最新的 Android Studio 3.0.0-beta6 来构建我的 Android 项目,但存在此依赖性问题。 Gradle
鼓励我更换所有compile's
使用implementation's
。 这是我的项目结构:
项目:
模块1
Module1 依赖于一些库,module2 依赖于 module1。 但是,模块 1 中的库在模块 2 中不可见。 我不想复制粘贴依赖项,而是希望库依赖项只声明一次。 有没有简单的解决方案? 谢谢。
module1 的构建等级:
dependencies {
....
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
...
}
module2 的构建等级:
implementation project(':module1')
在你的 Root Project -> build.gradle 你应该有这样的东西:
allprojects {
repositories {
jcenter()
}
}
在那里添加依赖项!!
更新
如果您不希望所有模块都具有公共依赖项而只希望特定模块,则执行以下操作:
在此文件夹中创建一个 .gradle 文件(例如 gradleScript/dependencies.gradle),如下所示:
ext { //Version supportLibrary = '22.2.1' //Support Libraries dependencies supportDependencies = [ design : "com.android.support:design:${supportLibrary}", recyclerView : "com.android.support:recyclerview-v7:${supportLibrary}", cardView : "com.android.support:cardview-v7:${supportLibrary}", appCompat : "com.android.support:appcompat-v7:${supportLibrary}", supportAnnotation: "com.android.support:support-annotations:${supportLibrary}", ] }
在您的根项目 build.gradle 中添加以下行:
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.2.3' } } // Load dependencies apply from: 'gradleScript/dependencies.gradle'
在您的模块中相应地添加以下内容:
// Module build file dependencies { //...... compile supportDependencies.appCompat compile supportDependencies.design }
希望这有帮助!!!
老问题,但在我看来,您所追求的只是在您的 gradle 文件中使用api
而不是implementation
?
如果模块 X 声明了api
依赖项,则它可传递给依赖于 X 的任何其他模块。但是,如果它声明了implementation
依赖项,则该依赖项中的类将放在模块 X 的类路径上,但不适用于其中的任何模块取决于模块 X。
从 Gradle 的文档:
api 配置中出现的依赖项将传递给库的使用者,因此将出现在使用者的编译类路径上。 另一方面,在实现配置中发现的依赖项不会暴露给消费者,因此不会泄漏到消费者的编译类路径中。
所以具体来说:
模块一:
dependencies {
....
api 'io.reactivex.rxjava2:rxandroid:2.0.1'
api 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
...
}
模块二:
implementation project(':module1')
这不是您想要做的最简单的解决方案吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.