找不到对象上的参数 [project ':model'] 的方法 api()

Posted

技术标签:

【中文标题】找不到对象上的参数 [project \':model\'] 的方法 api()【英文标题】:Could not find method api() for arguments [project ':model'] on object of找不到对象上的参数 [project ':model'] 的方法 api() 【发布时间】:2018-05-16 15:18:45 【问题描述】:

错误:(36, 0) 在 org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler 类型的对象上找不到参数 [project ':model'] 的方法 api()

请帮帮我。

这是我的 build.gradle 文件。

apply plugin: 'com.android.application'
//apply plugin: 'io.fabric'

android 
compileSdkVersion 26
buildToolsVersion "26.0.2"
defaultConfig 
 applicationId "com.manafzar.mytaxi.driver"
 minSdkVersion 16
 targetSdkVersion 26
 versionCode 23
 versionName "2.0.3"
 multiDexEnabled true
 vectorDrawables.useSupportLibrary = true
 javaCompileOptions 
    annotationProcessorOptions 
    arguments = [eventBusIndex: 
   'com.manafzar.mytaxi.driver.DriverEventBusIndex']
  
 

buildTypes 
 release 
   minifyEnabled false
   proguardFiles getDefaultProguardFile('proguard-android.txt'), 
      'proguard-rules.pro'
  

dataBinding 
  enabled = true
  


dependencies 
   annotationProcessor 'org.greenrobot:eventbus-annotation-processor:3.0.1'
   api project(':model')
   api 'com.google.maps.android:android-maps-utils:0.5'
   api 'com.diogobernardino:williamchart:2.5.0'

apply plugin: 'com.google.gms.google-services'

【问题讨论】:

我的纯 Java 项目(没有 Android)也遇到了同样的问题。我通过在我的build.gradle 文件中添加以下行来修复它:apply plugin: 'java-library' @ShadowMan:你的评论应该是一个答案,这样它才能获得投票! 【参考方案1】:

我从 Gradle 5.0 迁移到 Gradle 6.0.x 时遇到了同样的问题。

正如@ShadowMan 提到的,问题是缺少引入api 方法的java-library 插件。

在您的build.gradle 文件中,您应该包括:

plugins 
    id 'java-library'

更多信息可以在这里找到:https://docs.gradle.org/current/userguide/java_library_plugin.html

【讨论】:

【参考方案2】:

我向项目的build.gradle添加了两个项目依赖:

buildscript 
    
    repositories 
        google()
        jcenter()
        
    
    dependencies 
        classpath 'com.android.tools.build:gradle:3.6.2'

        **api project(':StickyListHeaders')**
        **api project(':Farayan.Core')**
    

将依赖项移至模块的build.gradle后,问题解决:

dependencies 
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'androidx.appcompat:appcompat:1.2.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

    **api project(':StickyListHeaders')**
    **api project(':Farayan.Core')**

【讨论】:

【参考方案3】:

请在您的依赖项标签中添加“compile”而不是“api”。 请在您的主 bu​​ild.gradle 文件中添加以下代码:

allprojects 
    repositories 
        jcenter()
        google()
        maven 
            url "https://maven.google.com"
        
    

【讨论】:

在 gradle 中处理依赖项的新方法是使用 implementation 处理任何运行时范围的依赖项(例如 jackson 或 bouncycastle 等实际上并未在您的 API 中公开但运行所需的东西正确),api 用于编译(默认)范围依赖项(编译和运行都需要的东西)。见:***.com/a/44419574/2167531

以上是关于找不到对象上的参数 [project ':model'] 的方法 api()的主要内容,如果未能解决你的问题,请参考以下文章

Django - NoReverseMatch:“bha”的反向没有找不到参数

在 NSManagedObjects 上的错误调试属性的对象上找不到属性

analyst复制到project里面后为啥打开找不到项目

Android 上的 Flutter 错误:找不到 aapt2-proto.jar

为啥 emacs-lsp go-mode 在路径中找不到 go 可执行文件?

Java:重构后加载保存在硬盘上的对象=>“找不到类”异常:/