在项目中使用gradle插件,其依赖项也使用相同的插件

时间:2015-02-26 11:26:39

标签: java gradle

我是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的原因。我的子模块可以而且也应该独立地使用不同的版本。

1 个答案:

答案 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,一切正常。