首先,我解释一下我的项目设置。我使用Android Studio中使用的Project / Module。
我的项目设置如下:
LibraryProject =>一个只对我的库进行分组的项目,如有必要,我会在其他项目中使用
MyProject1
我的Project1现在如下所示:
1)我引用了我想要使用的另一个项目中的模块(在settings.gradle (Project Settings)
文件中完成:
include ':app'
include ':dialogLibrary '
project(':dialogLibrary ').projectDir = new File(settingsDir, '../LibraryProject/DialogLibrary ')
2)我将外部库模块作为依赖项添加到我的应用程序build.gradle
:
dependencies {
compile project(':dialogLibrary ')
}
我的图书馆计划如下所示:
我将存储库和依赖项直接添加到模块的`build.gradle' (这足以在其上构建模块并且没有问题):
allprojects {
repositories {
maven { url 'https://dl.bintray.com/drummer-aidan/maven' }
}
}
dependencies {
compile 'com.afollestad:material-dialogs:0.7.5.2'
}
问题
到目前为止,设置对MyProject1不起作用。我还必须将maven { url 'https://dl.bintray.com/drummer-aidan/maven' }
添加到MyProject1,compile project(':dialogLibrary ')
还不够。我必须再次将从LibraryModule继承的依赖项添加到MyProject1 Project build.gradle
,如下所示:
allprojects {
repositories {
mavenCentral()
maven { url 'https://dl.bintray.com/drummer-aidan/maven' } // com.afollestad:material-dialogs
}
}
否则,我无法编译我的项目。这种方式似乎做了两次可能自动完成的事情。但是怎么样?这样,每当我从LibraryProject中包含一个模块时,我都要检查是否需要一个额外的maven repo ......
答案 0 :(得分:0)
我认为这与Gradle在构建LibraryProject
时不了解MyProject1
的settings.gradle文件这一事实有关。因此它包含dialogLibrary
,好像它是它自己的正常子项目。这解释了为什么Maven回购不知道MyProject
的原因; LibraryProject
的配置尚未加载。
也许您可以在dialogLibrary
中加入LibraryProject
?虽然我做了一些测试但无法让它工作。它可能与Gradle的限制有关。有关于多个settings.gradle文件here的StackOverflow帖子。
解决方法可能是构建LibraryProject的模块并使用它们。例如,将DialogLibrary构建到jar,将其上传到Maven存储库,而不是在App项目中,只需将DialogLibrary包含为普通依赖项(不要忘记包含Maven存储库)。