Gradle:无法从外部生成脚本配置artifactory

Gradle:无法从外部生成脚本配置artifactory,gradle,artifactory,Gradle,Artifactory,我是gradle的新手,希望从中访问我的artifactory存储库。如果我将所有配置放在一个构建脚本中,构建就会成功。以下是my build.gradle的相关部分: allprojects { apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'artifactory' } // ... buildscript { repositories { maven {

我是gradle的新手,希望从中访问我的artifactory存储库。如果我将所有配置放在一个构建脚本中,构建就会成功。以下是my 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 ...
现在,为了更好地组织,我想将artifactory部分提取到一个单独的gradle脚本中。这就是构建出错的地方。非常令人惊讶的是,即使我将build.gradle复制到foo.gradle,并将build.gradle更改为只包含一行,也会出现以下错误

apply from: 'foo.gradle'
错误是

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.
如果这不是一个bug,谁能解释一下gradle的
应用于
的行为并提出解决方案


谢谢

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


您还可以使用完全限定的类名在助手脚本中应用插件:

buildscript {
    repositories {
         jcenter() 
         mavenCentral()
    }
    dependencies {
        classpath "com.adaptc.gradle:nexus-workflow:0.5"
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:2.2.4"
    }
}
apply plugin: org.jfrog.gradle.plugin.artifactory.ArtifactoryPublicationsPlugin
apply plugin: com.adaptc.gradle.nexusworkflow.NexusWorkflowPlugin
请注意,如果在类名周围加引号,Gradle将找不到插件,这与插件名通常的做法相同

以下是我如何找到Artifactory插件的类名:

  • 谢天谢地,我下载了插件

  • 我在文件中搜索插件的名称,找到了
    artifactory puplish.properties

  • 它包含以下内容: 属性:
    implementation class=org.jfrog.gradle.plugin.artifactory.ArtifactoryPublicationsPlugin

  • 没有这样的属性文件,所以我四处寻找,直到找到

    plugins-gradle-master/nexus-workflow/src/main/groovy/com/adaptc/gradle/nexusworkflow/NexusWorkflowPlugin.groovy
    

    可以使用一个例子来说明如何在init脚本中工作。我试过了,但无法运行init脚本并正确设置。这正是第60.5节所说的。添加了示例。
    plugins-gradle-master/nexus-workflow/src/main/groovy/com/adaptc/gradle/nexusworkflow/NexusWorkflowPlugin.groovy