以下是我的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
插件会破坏对自定义配置的依赖?
答案 0 :(得分:1)
您的自定义工件看起来是bug/limitation in Gradle的另一个触发器。由于Spring Boot的插件使用dependency management plugin中的某些逻辑而导致的故障,除其他外,确保依赖性'poms中声明的任何排除都按预期应用。
您可以通过告诉依赖关系管理插件不应用Maven排除语义来解决问题,但可能需要声明一些额外的排除项:
dependencyManagement {
applyMavenExclusions false
}