我需要从 springBootsbootJar
gradle 任务中排除特定的依赖项(类似于 maven 中提供的范围(。
我尝试了自定义配置,但dependency-which-should-not-be-in-bootJar
仍然包含在生成的 jar 中。
configurations{
provided
implementation.extendsFrom provided
}
dependencies {
// ...
provided "dependency-which-should-not-be-in-bootJar"
}
jar {
from configurations.compile - configurations.provided
from configurations.runtime
}
bootJar {
from configurations.compile - configurations.provided
from configurations.runtime
launchScript()
}
我还从 Andy Wilkinson 的春季启动 gitter 频道中得到了答案,该频道的工作方式略有不同,但设法实现了类似的效果。
configurations {
custom
runtime.extendsFrom custom
}
dependencies {
compile 'org.springframework.boot:spring-boot-starter-web'
custom 'com.h2database:h2'
}
bootJar {
exclude {
configurations.custom.resolvedConfiguration.files.contains(it.file)
}
}
谢谢安迪=(
实际上,你可以将compileOnly用于 gradle> 2.12 的依赖项
dependencies {
// ...
compileOnly "dependency-which-should-not-be-in-bootJar"
}
您仍然可以将其用于测试 + 运行时,但不会在最终构建的 jar 中。