spring-boot gradle插件混乱常春藤依赖配置?

时间:2016-07-05 17:05:18

标签: java gradle spring-boot

以下是我的gradle构建脚本:

buildscript {
  repositories {
    jcenter()
  }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.6.RELEASE")
    }
}
apply plugin: 'spring-boot'
apply plugin: 'base'

task wrapper(type: Wrapper) {
  gradleVersion = '2.12'
}

repositories {
  ivy {
    url 'my.url'
  }
}

dependencies {
  archives group: 'my.group', name: 'artifact.name', version: '16.06.29.5144', configuration: 'dist'
}

在其中我尝试向archives配置添加一个依赖项。这是发布到Ivy repo中的依赖项,它有几个配置,其中包括dist配置。但它没有default配置。

现在,如果我运行gradlew dependencies,我会收到以下错误:

Execution failed for task ':dependencies'.
Could not resolve all dependencies for configuration 'detachedConfiguration4'.
   > Module version :gtest:unspecified, configuration 'detachedConfiguration4' declares a dependency on configuration 'default' which is not declared in the module descriptor for my.group:artifact.name:16.06.29.5144

当我删除spring-boot插件时,错误消失,我看到了预期的输出:

archives - Configuration for archive artifacts.
\--- my.group:artifact.name:16.06.29.5144

为什么spring-boot插件会破坏对自定义配置的依赖?

1 个答案:

答案 0 :(得分:1)

您的自定义工件看起来是bug/limitation in Gradle的另一个触发器。由于Spring Boot的插件使用dependency management plugin中的某些逻辑而导致的故障,除其他外,确保依赖性'poms中声明的任何排除都按预期应用。

您可以通过告诉依赖关系管理插件不应用Maven排除语义来解决问题,但可能需要声明一些额外的排除项:

dependencyManagement {
    applyMavenExclusions false
}