下面是获取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。一切都一样。
我很困惑..。
发布于 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'
}
}
发布于 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构建显示了这篇文章的问题
发布于 2017-09-25 09:08:48
在使用Jenkins进行构建时,我遇到了类似的异常。对我来说,冲突的是Jenkin的版本和构建脚本中的版本:
为了解决这个问题,构建的Artifactory部分有一个标记,您可以选中指定要使用gradle文件中的版本:
这解决了我的问题。希望能有所帮助。
https://stackoverflow.com/questions/29807622
复制相似问题