Почему Gradle 5 (5.6.3) принял неожиданное решение при разрешении компонентов?

У меня очень большая сборка 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 [с точки зрения градиента] вместо DefaultProjectDependency, и сборка не выполняется, как ожидалось

Кто-нибудь решает эту проблему?

примечания:

  1. Пожалуйста, не предлагайте составные сборки (в данный момент это невозможно, но я над этим работаю)
  2. Измените систему сборки (у нас действительно большой проект):)

1 ответ

Решение

Единственные причины, по которым Gradle заменит зависимость проекта зависимостью модуля:

  • если определено правило замены. Проверьте, есть ли у вас определенные.
  • если вы ссылаетесь WFPlugins-Server где-нибудь в вашей сборке как бинарная зависимость, и она появляется как часть SpringWFSграф зависимостей, и он имеет более высокую версию, чем проект.

В последнем случае вы можете настроить стратегию разрешения, чтобы предпочесть проект модулям.

Другие вопросы по тегам