这是获取人工插件的配置:
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 。一切都一样。
我很困惑...
最佳答案
问题是,当我向兄弟项目添加各种位时,这意味着我有两个项目定义了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'
}
}