繁体   English   中英

Gradle:未从嵌套项目解析类路径依赖项

[英]Gradle: classpath dependency not resolved from nested project

我有一个带有gradle的多项目构建设置,它将包含多个Android应用程序和库。

项目结构示例:

root (Project Root)
| android
  | module1 (Android Application)
  | module2 (Android Library)
| ios (in the future)

我想将某些gradle插件仅应用于某些子项目。 (例如android gradle插件只对android子项目)因此我在:android -> build.gradle和两个android子项目的插件声明中添加了类路径依赖:
:android:module1 -> build.gradle -> apply plugin: 'com.android.application'

:android:module2 -> build.gradle -> apply plugin: 'com.android.library'问题是gradle找不到android gradle插件:

错误:(1,1)评估项目':Shoppr:presentation'时出现问题。 找不到ID为'com.android.application'的插件。

此外,它不像其他一些问题(Gradle Version 3.1; Android Gradle Plugin Version:2.2.1)中的版本问题,因为在以下位置定义类路径依赖项时:root -> build.gradle:android:moduleX -> build.gradle一切都按预期工作。

:root - > build.gradle

allprojects {
  repositories {
    mavenCentral()
    jcenter()
  }
}

:android - > build.gradle

buildscript {
  repositories {
    jcenter()
  }

  dependencies {
    classpath 'com.android.tools.build:gradle:2.2.1'    <-- Should only be applied for android project
  }
}

:android:module1 - > build.gradle

apply plugin: 'com.android.application' --> Plugin with id 'com.android.application' not found.

:android:module2 - > build.gradle

apply plugin: 'com.android.library'

我已经看到这样的文件夹安排,尤其是谷歌示例项目,包括和android文件夹,还有一个Web文件夹。 你可以尝试使用android文件夹作为项目文件夹导入项目,因为你可能没有使用gradle来构建Ios和web,如果你有另外两个文件夹为你的项目。

所以关闭项目并使用android文件夹作为项目根重新导入它,我相信这样,gradle应该运行正常。 我的项目文件夹也是这样的,因为我在一个单独的回购中有web和android项目,但在使用android studio构建时,我使用android文件夹作为android的项目根目录。

我有一个类似的问题。 我从一个带有3个子任务的android文件夹转到用子任务划分为3个文件夹:

| android  

    | shared
        -- generates aar
    | device1
        -- generates 2 apks
    | device2
        -- generates 1 apk
    | gradle
    gradlew.bat
    gradlew

device1和device2都想使用共享。 所以我从android文件夹中删除了settings.gradle和build.grade。 device1,device2和shared都有自己的build.grade和settings.gradle。 我分别构建device1和device2。 为了让它们包含共享和构建,我将android文件夹中的shared,gradlew,gradlew.bat和gradle文件夹的符号链接放入device1和device2。 瞧,它有效! (我在Ubuntu计算机上,但应该可以在Windows和Mac上执行相同操作。)

缺点是每次都建立共享。 在我们的例子中,这不是太糟糕,它不是很大。

[标签:多级项目]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM