我在Gradle中有一个多项目构建,我的问题是我的一个项目依赖于在构建另一个项目期间生成的一个jar。更清楚: 项目A生产:a.jar,b.jar,c.jar,d.jar 项目B取决于:仅限b.jar
有没有办法不依赖于整个项目A而只依赖于b.jar?
有人解决了类似的问题吗?
答案 0 :(得分:0)
这可以通过配置实现。我们假设您将 b.jar 添加到项目A中的自定义配置中:
configurations {
bArchives
}
artifacts {
bArchives bJarTask
}
其中 bJarTask 是创建 b.jar 的任务。现在在项目B中,您可以声明对该自定义配置的依赖:
dependencies {
compile project(path: ":a", configuration: "bArchives")
}
不幸的是,有一个问题。这将仅在运行时类路径中包含 b.jar ,而不是 b.jar 的任何传递依赖项。如果您希望添加这些传递依赖项,您应该能够让自定义工件配置扩展项目A中的相应依赖项配置:
configurations {
bArchives.extendsFrom "bRuntime"
}
我还没有测试过最后一点,所以我不能100%确定它会起作用。 Java插件的工作方式不同,它将 jar 任务中的工件直接添加到运行时配置。