我是gradle的新手(从maven离开)。现在我有一个问题。我有一个gradle构建,我想使用com.bmuschko.nexus插件。但是我的项目还涉及另一个我想使用com.bmuschko.nexus插件的项目。
因此,当我构建时,我得到一个异常:
Plugin 'com.bmuschko.nexus' is already on the script classpath. Plugins on the script classpath cannot be applied in the plugins {} block. Add "apply plugin: 'com.bmuschko.nexus'" to the body of the script to use the plugin.
但是当我这样做时 - >添加"应用插件:' com.bmuschko.nexus'"到脚本的主体使用插件。我会得到另一个例外:
> Failed to apply plugin [id 'com.bmuschko.nexus']
> Plugin with id 'com.bmuschko.nexus' not found.
嗯......我可以解决这个问题吗?
settings.gradle
include ':config'
project(':config').projectDir = new File(settingsDir, '../zConfig')
的build.gradle
plugins {
// id "com.bmuschko.nexus" version "2.3" // already in classpath
id "me.champeau.gradle.antlr4" version "0.1"
}
apply plugin: 'java'
apply plugin: 'maven'
//apply plugin: 'com.bmuschko.nexus'
dependencies {
compile project(':config')
}
编辑:重现只是克隆回购https://github.com/KIC/stackoverflow/tree/master/gradleproblem并在条形目录中尝试gradle tasks
EDIT2:似乎我可以通过省略插件来解决nexus上传问题并按照这个回答https://stackoverflow.com/a/16766946/1298461
但是因为我还有一个antlr项目和第二个扩展第一个语法的antlr项目,所以我和另一个插件有同样的问题。我想当我使用父build.gradle和subprojects {}时,我可以解决这个问题。但这正是我离开maven并转向gradle的原因。我的子模块可以而且也应该独立地使用不同的版本。
答案 0 :(得分:2)
' com.bmuschko.nexus'插件已经在config
项目中。这就是出现以下错误的原因: Plugin' com.bmuschko.nexus'已经在脚本类路径上。脚本类路径上的插件无法在插件{}块中应用。添加"应用插件:' com.bmuschko.nexus'"到脚本的主体使用插件。
我做了以下事情:
编辑build.gradle(配置项目)
apply plugin: 'java'
apply plugin: 'maven'
apply from: '../repos.gradle'
编辑build.gradle(bar项目)
buildscript {
repositories {
mavenLocal()
mavenCentral()
jcenter()
}
dependencies {
classpath 'com.bmuschko:gradle-nexus-plugin:2.3'
}
}
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'com.bmuschko.nexus'
apply from: '../repos.gradle'
dependencies {
compile project(':config')
}
然后我运行gradle tasks
,一切正常。