1

我有一个非常大的多项目 java 构建。在更新到 Gradle 5(4.10.3->5.6.3) 之后,最可怕的事情之一就是依赖解析期间的意外失败:

...
dependencies {
// I know about the deprecation of 'compile', with 'implementation' I have the same problems
    compile project(":Monitor")
    compile project(":WFPlugins-Server")
    compile project(":web-spring")
    compile project(":Security")
    compile project(":Client")
}
...

对我来说,这一天很清楚,它应该是一个项目依赖。但我收到:

FAILURE: Build failed with an exception.



* What went wrong:

Execution failed for task ':SpringWFS:compileJava'.

> Could not resolve all files for configuration ':SpringWFS:compileClasspath'.
   > Could not find com.company:WFPlugins-Server:1.12.

     Required by:
         project :SpringWFS

因此,gradle 试图将其解决为ExternalModuleDependency [就 gradle 而言] 而不是DefaultProjectDependency并且构建按预期失败

有人解决这个问题吗?

评论:

  1. 请不要提出复合构建(目前不可能,但我正在努力)
  2. 更改构建系统(我们有一个非常大的项目):)
4

1 回答 1

1

Gradle 将项目依赖替换为模块依赖的唯一原因是:

  • 如果定义了替换规则。检查您是否有任何定义。
  • 如果您WFPlugins-Server在构建中的其他地方引用二进制依赖项,并且它作为SpringWFS依赖关系图的一部分出现,并且它具有比项目更高的版本。

在最后一种情况下,您可以调整解析策略以更喜欢 project 而不是 modules

于 2019-12-06T08:41:20.130 回答