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

KIC*_*KIC 5 java 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.
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时 - >将"apply plugin:'com.bmuschko.nexus'"添加到脚本体中以使用该插件.我会得到另一个例外:

> Failed to apply plugin [id 'com.bmuschko.nexus']
   > Plugin with id 'com.bmuschko.nexus' not found.
Run Code Online (Sandbox Code Playgroud)

嗯......我可以解决这个问题吗?

settings.gradle

include ':config'
project(':config').projectDir = new File(settingsDir, '../zConfig')
Run Code Online (Sandbox Code Playgroud)

的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')
}
Run Code Online (Sandbox Code Playgroud)

编辑:重现只是克隆repo https://github.com/KIC/stackoverflow/tree/master/gradleproblem并尝试gradle tasks在条目目录

EDIT2:似乎我可以通过省略插件解决nexus上传问题并按照这个答案/sf/answers/1173686251/

但是因为我还有一个antlr项目和第二个扩展第一个语法的antlr项目,所以我和另一个插件有同样的问题.我想当我使用父build.gradle和subprojects {}时,我可以解决这个问题.但这正是我离开maven并进入gradle的原因.我的子模块可以也应该独立地使用不同的版本.

Edd*_*dez 1

“com.bmuschko.nexus”插件已经在config项目中。这就是出现以下错误的原因:插件“com.bmuschko.nexus”已位于脚本类路径上。脚本类路径上的插件不能应用在plugins {} 块中。将“应用插件:'com.bmuschko.nexus'”添加到脚本正文以使用该插件。

我做了以下事情:

编辑build.gradle(配置项目)

apply plugin: 'java'
apply plugin: 'maven'
apply from: '../repos.gradle'
Run Code Online (Sandbox Code Playgroud)

编辑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')
}
Run Code Online (Sandbox Code Playgroud)

然后我跑了gradle tasks,一切都好。

  • 您能否提供一下repos.gradle文件的相关内容? (2认同)