【问题标题】:Jenkins/Artifactory - Unable to find method create()Jenkins/Artifactory - 找不到方法 create()
【发布时间】:2016-11-07 15:28:13
【问题描述】:

我正在将一些构建从竹子转移到詹金斯,使用相同的 gradle 构建脚本来构建应用程序。关闭工件时,构建成功,但打开时失败:

09:22:08.568 [ERROR] [org.gradle.BuildExceptionReporter] FAILURE: Build failed with an exception.
09:22:08.569 [ERROR] [org.gradle.BuildExceptionReporter] 
09:22:08.569 [ERROR] [org.gradle.BuildExceptionReporter] * Where:
09:22:08.569 [ERROR] [org.gradle.BuildExceptionReporter] Initialization script '/tmp/init-artifactory2218166479825929225gradle' line: 20
09:22:08.570 [ERROR] [org.gradle.BuildExceptionReporter] 
09:22:08.570 [ERROR] [org.gradle.BuildExceptionReporter] * What went wrong:
09:22:08.570 [ERROR] [org.gradle.BuildExceptionReporter] Failed to notify build listener.
09:22:08.570 [ERROR] [org.gradle.BuildExceptionReporter] > Failed to notify build listener.
09:22:08.571 [ERROR] [org.gradle.BuildExceptionReporter]    > Could not find method create() for arguments [artifactoryPublish, class org.jfrog.gradle.plugin.artifactory.task.ArtifactoryTask] on task set.

初始化脚本正在由 artifactory 插件创建,如下所示:

import org.jfrog.gradle.plugin.artifactory.ArtifactoryPlugin
import org.jfrog.gradle.plugin.artifactory.task.ArtifactoryTask

initscript {
    dependencies {
        classpath fileTree('/var/lib/jenkins/cache/artifactory-plugin/2.7.2')
    }
}

addListener(new BuildInfoPluginListener())
class BuildInfoPluginListener extends BuildAdapter {

    def void projectsLoaded(Gradle gradle) {
        gradle.startParameter.getProjectProperties().put("build.start", Long.toString(System.currentTimeMillis()))
        Project root = gradle.getRootProject()
        root.logger.debug("Artifactory plugin: projectsEvaluated: ${root.name}")
        if (!"buildSrc".equals(root.name)) {
            root.allprojects {
                apply {
                    apply plugin: ArtifactoryPlugin
                }
            }
        }

        // Set the "archives" configuration to all Artifactory tasks.
        for (Project p : root.getAllprojects()) {
            Task t = p.getTasks().findByName(ArtifactoryTask.BUILD_INFO_TASK_NAME)
            if (t != null) {
                ArtifactoryTask task = (ArtifactoryTask)t
                task.setAddArchivesConfigToTask(true)
            }
        }
    }
}

我们在这个项目中使用的是 gradle 1.5,版本已经在 build.gradle 中声明了。

Build.gradle:

apply plugin: 'groovy'
apply from: 'scripts/wrapper.gradle'
gradleVersion='1.5'

group = 'com.company.build'

task testBuildSingle(type: GradleBuild) {
    buildFile = 'test/single/build.gradle'
    tasks = ['clean', 'build']
}

task testBuildMulti(type: GradleBuild) {
    buildFile = 'test/multi/build.gradle'
    tasks = ['clean', 'build']
}

test.dependsOn('testBuildSingle')

task dist(type: Copy) {
    from 'scripts'
    into("$buildDir/scripts")
    eachFile({
        def file = file("scripts/${it.getPath()}")
        println file
        artifacts.add('archives', file)
    })
}

dist.dependsOn('test')

【问题讨论】:

  • 正如您在Jenkins Artifactory Plugin 页面wiki.jenkins-ci.org/pages/viewpage.action?pageId=57182305 中看到的那样。 Artifactory Plugin 2.7.2 需要 Gradle 1.15。该问题可能是版本不兼容造成的。
  • 我有 gradle 1.25 插件,我尝试在构建脚本中使用不同的 gradle v. 构建,但它没有改变。
  • 可以分享gradle.build吗?
  • 添加到问题
  • 你使用的是什么版本的 build-info-extractor-gradle?

标签: java jenkins gradle artifactory


【解决方案1】:

您使用的是最新版本的 Artifactory 插件和 build-info-extractor-gradle,但您的 gradle 版本较旧。尝试使用最新版本的 gradle 3.1

【讨论】:

    【解决方案2】:

    如果您的成绩脚本已经应用了“com.jfrog.artifactory”插件,那么在 Jenkins 作业中您应该设置“项目使用 Artifactory 插件”选项,以确保 Jenkins 不会添加初始化脚本。 Bamboo 对于 Gradle Artifactory 任务具有相同的复选框。

    【讨论】:

      猜你喜欢
      • 2022-08-03
      • 1970-01-01
      • 2015-04-13
      • 2019-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多