Gradle无法为参数找到方法compile()

时间:2016-01-23 02:16:37

标签: android gradle android-gradle subproject

我有一个hello world全屏android studio 1.5.1应用程序,我添加了gradle / eclipse-mars子项目。没有修改其他文件,除了添加include':javalib'到settings.gradle。添加project lib dependency

project(':app') {
    dependencies {
        compile project(':javalib') // line 23
    }
}

到根构建构建文件并从命令行运行gradle,获取:

  • 其中: 构建文件' D:\ AndroidStudioProjects \ AndroidMain \ build.gradle'行:23

  • 出了什么问题: 评估根项目' AndroidMain'。

    时出现问题
      

    无法在org.grad上找到参数[project':javalib']的方法compile()   le.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler_Decorated@46   3ca82f。

adding the java plugin对根构建文件没有帮助。

我认为它不在wrong place

根项目和添加的子项目都有gradle包装器。

任何指针都将受到赞赏。

感谢

编辑:为了澄清,根构建文件是:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.5.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
allprojects {
    repositories {
        jcenter()
    }
    task hello << { task -> println "I'm $task.project.name" }
}

project(':app') {
    dependencies {
        //compile project(':javalib') // causes problems
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

并且应用构建文件是:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "acme.androidmain"
        minSdkVersion 22
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    //compile project(':javalib') // use :javalib:jar?
    //testCompile project(':javalib')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:support-v4:23.1.1'
}

编辑:本练习的全部目的是将核心java代码放入android项目中。目前核心代码是一个独立的gradle / eclispe项目。我在android项目中有一个批处理,它执行gradle -p standaloneprojectdir / jar并将jar复制到libs /.

我只是会发布一个更简单的方法,而不是发布jar并从存储库中获取它,因为这一切都在我的电脑上完成。

将所有代码保存起来并进行构建会很好:(

编辑:根据RaGe的建议,这里有virgin android studio projectvirgin gradle/eclipse project。没有对这些文件进行编辑。你的任务应该选择接受它是为了让Android应用程序轻松访问java项目类(即新的Library();在MainActivity.onCreate()中将编译并运行)。我不在乎java项目所在的位置。理想情况下,这两个来源都将在生活

尝试this也失败了。说:&gt;找不到:virginjavaproject,但目录确实存在。

编辑:实际工作的是RaGe对virgin android project的拉取请求。

5 个答案:

答案 0 :(得分:4)

你已经拥有

compile project(':javalib') 

在您的:app项目中,您不必从根build.gradle中注入依赖项。如果您仍希望从根build.gradle执行此操作,则执行此操作的正确方法是:

configure(':app') {
    dependencies {
        compile project(':javalib') // causes problems - NOT ANYMORE!
    }
}

virgin android studio头是有效的。

答案 1 :(得分:1)

我们有两个名为“build.gradle”的文件。 确保您已在“app”文件夹

内的build.gradle文件中复制了“编译代码”

答案 2 :(得分:0)

@peter-niederwieser所述:

  

构建脚本正在混合buildcript依赖项(即构建本身的依赖项;通常这意味着Gradle插件)具有常规依赖项(即要编译/运行的代码的依赖项)。后者需要进入依赖{...},而不是进入buildscript {dependencies {...}}。除了类路径依赖项之外的所有内容都是常规依赖项。

另请看一下:Could not find method compile() for arguments Gradle

答案 3 :(得分:0)

只需将其粘贴到build.gradle上(项目:&#34;您的项目名称&#34;)

 // Top-level build file where you can add configuration options common to all sub-projects/modules.

  buildscript {
    repositories {
        jcenter()
}
   dependencies {
    classpath 'com.android.tools.build:gradle:2.1.2'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
     }
 }

   allprojects {
repositories {
    jcenter()
   }
}

task clean(type: Delete) {
delete rootProject.buildDir
}

答案 4 :(得分:0)

我有这个问题,但有我自己的库。正确编译的方法是:

compile project(path: ':MyLib')