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

Я пытаюсь использовать каталог версий с Android-Studio Iguana 2023.2.1 Patch 2. Когда я пытаюсь синхронизировать Gradle, я получаю эту ошибку:

Invalid catalog definition:
 - Problem: In version catalog libs, you can only call the 'from' method a single time.

Но я использую его только один раз, по крайней мере, насколько я понимаю.

Это мой файл settings.gradle.file

pluginManagement {
    repositories {
        google {
            content {
                includeGroupByRegex("com\\.android.*")
                includeGroupByRegex("com\\.google.*")
                includeGroupByRegex("androidx.*")
            }
        }
        mavenCentral()
        gradlePluginPortal()
    }
}
dependencyResolutionManagement {
    versionCatalogs {
        libs {
            from(files("gradle/libs.versions.toml"))
        }
    }
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}

rootProject.name = "Emvoliasmoi"
include ':app', ':jsch-0.1.55', ':scan'

и это моя libs.version:

[versions]
kotlin = "1.9.24"
realm = "1.16.0"
androidApplication = "7.3.0"
appCompat = "1.1.0"
constraintLayout = "2.1.4"
lifecycle = "2.3.1"
material = "1.11.0"
retrofit = "2.9.0"
gson = "2.8.6"
work = "2.3.4"


[libraries]
appCompat = "androidx.appcompat:appcompat:$appCompat"
constraintLayout = "androidx.constraintlayout:constraintlayout:$constraintLayout"
lifecycleViewmodel = "androidx.lifecycle:lifecycle-viewmodel:$lifecycle"
lifecycleLivedata = "androidx.lifecycle:lifecycle-livedata:$lifecycle"
lifecycleCommonJava8 = "androidx.lifecycle:lifecycle-common-java8:$lifecycle"
material = "com.google.android.material:material:$material"
retrofit = "com.squareup.retrofit2:retrofit:$retrofit"
converter-gson = "com.squareup.retrofit2:converter-gson:$retrofit"
workRuntime = "androidx.work:work-runtime:$work"


[plugins]
androidApplication = { id = "com.android.application", version.ref = "androidApplication" }
kotlinAndroid = {id = "org.jetbrains.kotlin.android", version.ref = "kotlin"}
realm = {id  = "id.realm.kotlin", version.ref = "realm"}

Путь «gradle/libs.versions.toml» правильный относительно файла settings.gradle.

«От» используется только один раз. Кто-нибудь знает, что здесь не так?

Почему вы должны объявить этот libs.versions.toml файл каталогом версий? Согласно документации : Gradle offers a conventional file to declare a catalog. If a libs.versions.toml file is found in the gradle subdirectory of the root build, then a catalog will be automatically declared with the contents of this file.

Jay 19.05.2024 15:59

@Джей, ты прав. Я устранил ошибку. Опубликуйте это как ответ, чтобы я мог принять его как правильный ответ.

Christoforos 19.05.2024 18:13
1
2
762
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Нет необходимости специально объявлять значение libs.versions.toml по умолчанию в versionCatalogs, поскольку оно будет выбрано сборкой gradle из подкаталога gradle, как указано в документации :

Gradle предлагает обычный файл для объявления каталога. Если файл libs.versions.toml найден в подкаталоге gradle корневой сборки, то автоматически будет объявлен каталог с содержимым этого файла.

прокомментируйте эту часть кода

//  versionCatalogs {
//        libs {
//           from(files("gradle/libs.versions.toml"))
//       }
//    }

libs используется в качестве каталога версий по умолчанию. Нет необходимости настраивать. если вы хотите добавить новый каталог, вы можете сделать это следующим образом:

versionCatalogs {
    androidx {
        from(files("gradle/libs.androidx.toml"))
    }
}

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