首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Gradle artifactory插件显示"Cannot cast object 'org.jfrog.gradle.plugin.artifactory.dsl.ArtifactoryPluginConvention'...“

Gradle artifactory插件显示"Cannot cast object 'org.jfrog.gradle.plugin.artifactory.dsl.ArtifactoryPluginConvention'...“
EN

Stack Overflow用户
提问于 2015-04-23 03:59:21
回答 5查看 8.8K关注 0票数 33

下面是获取artifactory插件的配置:

buildscript {
    repositories {
        mavenCentral()
        maven { url 'http://jcenter.bintray.com' }
    }
    dependencies {
        classpath group:'org.jfrog.buildinfo', name: 'build-info-extractor-gradle', version: '3.0.1'
    }
}
apply plugin:'com.jfrog.artifactory'
apply plugin:'ivy-publish'

...some publish spec stuff...

我运行gradle (2.3),得到:

> Failed to apply plugin [id 'com.jfrog.artifactory']
   > Cannot cast object 'org.jfrog.gradle.plugin.artifactory.dsl.ArtifactoryPluginConvention@6b6c7be4' with class 'org.jfrog.gradle.plugin.artifactory.dsl.ArtifactoryPluginConvention' to class 'org.jfrog.gradle.plugin.artifactory.dsl.ArtifactoryPluginConvention'

当然看起来像是一个类路径问题,但我确实有一个项目和一个兄弟项目使用了相同的gradle/artifactory配置集,一个可以工作,另一个不能。两者都是同一顶层项目的一部分。相同的JDK (1.8.0_20)。相同的Gradle。一切都一样。

我很困惑..。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2015-04-23 05:49:47

问题是,当我将不同的部分添加到兄弟项目中时,这意味着我有两个项目定义了buildscript {}部分。

buildscript {
    ...
    dependencies {
        classpath group:'org.jfrog.buildinfo', name: 'build-info-extractor-gradle', version: '3.0.1'
    }
}

显然,这导致类路径中存在两个不同版本的依赖项,因此出现错误。

解决方案是将buildscript位移动到主项目中,以便这些依赖项只定义一次:

buildscript {
    repositories {
        maven { url "https://plugins.gradle.org/m2/" }
    }
    dependencies {
        classpath group:'org.jfrog.buildinfo', name: 'build-info-extractor-gradle', version: '3.0.1'
    }
}
票数 23
EN

Stack Overflow用户

发布于 2017-10-06 04:47:38

这是另一个潜在的原因。所有这一切看起来都是定义类的竞争类加载器的问题。完全限定的类包括加载器。因此,load A foo.bar不是loader B foo.bar,跨越这一界限是需要接口和仔细定义的复杂舞蹈。

因此,当使用Jenkins artifactory插件构建gradle项目时,您必须添加usesPlugin,否则jenkins插件将生成一个初始化脚本,该脚本将gradle插件添加到类加载器中。

def server = Artifactory.server "artifactory"
def rtGradle = Artifactory.newGradleBuild()
rtGradle.usesPlugin = true // Artifactory plugin already defined in build script
...

我的问题是,桌面构建正常,jenkins构建显示了这篇文章的问题

票数 9
EN

Stack Overflow用户

发布于 2017-09-25 09:08:48

在使用Jenkins进行构建时,我遇到了类似的异常。对我来说,冲突的是Jenkin的版本和构建脚本中的版本:

为了解决这个问题,构建的Artifactory部分有一个标记,您可以选中指定要使用gradle文件中的版本:

这解决了我的问题。希望能有所帮助。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29807622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档