Gradle构建带依赖JAR报错Cannot convert the provided notation to a File or URI
问题原因
你的Gradle构建脚本中jar任务的配置存在作用域错误:
- 用于指定任务依赖的
dependsOn configurations.runtimeClasspath、用于合并所有依赖包的from块,被错误嵌套进了manifest {}配置块内部。 manifest块的作用仅为配置Jar包的清单文件属性,无法识别你传入的zipTree集合类型,因此触发了提供的参数无法转换为File/URI的类型报错。
解决方案
- 把
dependsOn和from配置移动到manifest块外部,和manifest平级即可。 - 可选添加重复文件策略配置,避免多依赖存在同名文件时构建失败。
- 你已经在
plugins块声明了java插件,冗余的apply plugin: 'java'可以直接删除。
修正后的jar任务配置如下:
jar { manifest { attributes( 'Main-Class': 'com.darkascendants.DABot' ) } dependsOn configurations.runtimeClasspath from { configurations.runtimeClasspath.findAll { it.name.endsWith('jar') }.collect { zipTree(it) } } // 解决多依赖中同名文件冲突问题 duplicatesStrategy = DuplicatesStrategy.EXCLUDE }
修改配置后重新执行jar任务即可正常构建包含所有依赖的可执行Jar包。
内容的提问来源于stack exchange,提问作者Crimson1222
相关产品推荐
相关产品推荐

