Gradle:无法从外部构建脚本配置工件

bea*_*oet 5 artifactory gradle

我是gradle的新手,想从中访问我的神器库.如果我将所有配置放入一个构建脚本中,则构建成功.以下是build.gradle的相关部分:

allprojects {
    apply plugin: 'java'
    apply plugin: 'eclipse'
    apply plugin: 'artifactory'
}

// ...

buildscript {
    repositories {
        maven { 
            url 'http://repo.jfrog.org/artifactory/gradle-plugins' 
        }

        maven {
            url artifactory_contextUrl + 'plugins-release'

            credentials {
                username = artifactory_user
                password = artifactory_password
            }
        }
    }

    dependencies {
        classpath(group: 'org.jfrog.buildinfo', name: 'build-info-extractor-gradle', version: '2.0.16')
    }
}


artifactory {
    contextUrl = artifactory_contextUrl

    publish {
        repository {
            repoKey = 'libs-release-local'
            username = artifactory_user
            password = artifactory_password
            maven = true
        }
    }

    resolve {
        repository {
            repoKey = 'libs-release'
            username = artifactory_user
            password = artifactory_password
            maven = true
        }
    }
}


dependencies {
    // My dependencies ...
}

// Rest of the build script ...
Run Code Online (Sandbox Code Playgroud)

现在,我想将artifactory部分拉出一个单独的gradle脚本以便更好地组织.这是构建出错的地方.非常令人惊讶的是,即使我将build.gradle复制到foo.gradle,我也会收到以下错误,并将build.gradle更改为仅包含单行

apply from: 'foo.gradle'
Run Code Online (Sandbox Code Playgroud)

错误是

FAILURE: Build failed with an exception.

* Where:
Script '/path/to/my/project/foo.gradle' line: 5

* What went wrong:
A problem occurred evaluating script.
> Plugin with id 'artifactory' not found.
Run Code Online (Sandbox Code Playgroud)

如果这不是一个错误,任何人都可以解释这种gradle的行为apply from并提出解决方案吗?

谢谢

JBa*_*uch 5

apply from一旦已经配置了构建脚本,就会解析该部分,因此告诉Gradle在哪里找到具有特定ID的插件为时已晚.您必须将该buildscript部分保留在脚本中,或将其放在init脚本中:

apply from : 'http://link.to/my/gradle.script'
Run Code Online (Sandbox Code Playgroud)