gradle中的传递文件依赖项
我想控制多项目Java构建中的哪些依赖项是可传递的。 我目前的解决方案是在根项目中设置“导出”配置:
allprojects { configurations { export { description = 'Exported classpath' } compile { extendsFrom export } } }
项目A具有多个文件依赖项:
dependencies { compile files('A.jar', 'B.jar') export files('C.jar') }
项目B依赖于项目A,但只有C.jar
应该在类路径上进行编译,因此添加:
dependencies { export project(path: ':A', configuration:'export') }
这会产生所需的结果, A.jar
和B.jar
不在类路径上,但C.jar
在类路径上进行编译。
我不确定这是否是“gradle”做事的方式。 要配置传递性,我宁愿为项目A中的依赖项指定属性或配置闭包,而不是使用不同的“导出”配置。
这可能是文件依赖,还是有另一种方法来实现这一点?
如果我正确理解你的场景,那么很容易做到这一点。 只需在依赖项声明的末尾添加一个选项闭包,以防止传递依赖(我已将A,B,C .jar更改为X,Y,Z,因为我猜它们与项目A和B不一致) :
// Project A build.gradle dependencies { compile(files('X.jar', 'Y.jar')) { transitive = false } export files('Z.jar') }
这会阻止X.jar和Y.jar被添加到项目B的类路径中。
或者,我不知道这对你有多好,并且不推荐它(只是想让你知道可能性)你可以在项目B的build.gradle中做到这一点:
configurations.compile.dependencies.find { it.name == "A.jar" }.exclude(jar: it) configurations.compile.dependencies.find { it.name == "B.jar" }.exclude(jar: it)
希望有所帮助。
- 将sourcesJar任务添加到自定义Gradle插件
- Spring引导Hibernate错误java.lang.NoSuchMethodError:javax.persistence.JoinColumn.foreignKey()Ljavax / persistence / ForeignKey;
- 即使测试失败,Gradle也会在测试阶段后执行任务
- 如果找不到文件依赖项,如何使Gradle失败?
- 从Gradle依赖项中排除包
- 如何在IntelliJ Idea中禁用Gradle守护进程?
- Maven的档案相当于Gradle
- 将Gradle.build版本导入Spring Boot
- Gradle和JaCoCo:来自单独子项目的仪器类