Gradle - 从模块

时间:2015-06-12 07:23:55

标签: android maven gradle dependencies

首先,我解释一下我的项目设置。我使用Android Studio中使用的Project / Module。

我的项目设置如下:

  • LibraryProject =>一个只对我的库进行分组的项目,如有必要,我会在其他项目中使用

    • BackupLibrary(模块)
    • DatabseLibrary(模块)
    • MainUtilityLibrary(Module)
    • DialogLibrary(模块)
  • MyProject1

    • App(项目)
    • DialogLibrary(模块,引自DIRFFERENT项目)

我的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 ......

1 个答案:

答案 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存储库)。