Попробовав все различные предложения по этой проблеме, мне показалось, что сработало копирование нераспознанных jar-файлов из локального кэша Gradle в папку в моем проекте. Я также должен был сказать Gradle, чтобы посмотреть там.
В итоге, если я изменю свой корневой проект build.gradle следующим образом:
allprojects {
repositories {
flatDir {
dirs 'lib'
}
}
... existing repos ...
}
и build.gradle подпроекта так:
dependencies {
... existing dependencies ...
compile fileTree(dir: 'lib', include: '*.jar')
}
и затем выполните следующее:
jars=($(find /Users/me/.gradle/caches/modules-2/files-2.1/unrecognizedorg/ -name '*.jar'))
for jar in "${jars[@]}" ; do
cp "$jar" ~/myproject/lib/
done
и затем обновите Gradle в IntelliJ, файлы будут распознаны.
Конечно, тогда у меня проблема с папкой lib с jar-файлами, которые я не хочу фиксировать в своем проекте, но есть способы обойти это. Также существует проблема поддержания этих папок в актуальном состоянии при изменении каких-либо зависимостей.
Я решил эту проблему, сделав символическую ссылку на каталог кэша Gradle:
ln -s /Users/me/.gradle/caches/modules-2/files-2.1/ lib
Чтобы мне не нужно было копировать файлы, а любые изменения регистрируются автоматически.
Обновление
После временного удаления всех моих обходных путей, чтобы я мог оценить, как заставить IntelliJ работать без фиксации обходных путей (меняется сценарий сборки, а также символическая ссылка), я обнаружил, что он все еще работает (!). То есть теперь он работает в IntelliJ без каких-либо изменений (от меня) от состояния, которое не работало.
Вывод, который я сделал, заключается в том, что, возможно, IntelliJ имел поврежденный кеш, который был исправлен только путем распознавания банок по символической ссылке. Хотя я не пробовал, возможно, что и удаление ~ / .gradle / caches, и перезагрузка проекта имели бы одинаковый эффект.
В любом случае, выполнение шагов, описанных выше, а затем их удаление, похоже, помогает.