Настройка репозиториев для всех проектов в Gradle - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь настроить репозитории для всех подпроектов.

У меня есть основной build.gradle:

buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
        google()
        jcenter()
        ...
    }
    dependencies {
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

plugins {
    id 'base'
}

allprojects {
    apply plugin: 'base'

    repositories {
        mavenLocal()
        mavenCentral()
        google()
        jcentre()
        ...
    }

    wrapper{
        gradleVersion = '6.5.1'
        distributionType = Wrapper.DistributionType.ALL
    }

    dependencies {
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

В подпроектах build.gradle у меня просто:

...

dependencies {
    implementation ....
}

Я получаю:

Execution failed for task ':compileJava'.
> Could not resolve all files for configuration ':compileClasspath'.
   > Cannot resolve external dependency .... because no repositories are defined.
     Required by:
         project :

Я хочу определить repositories один раз в основном файле, поскольку они не меняются в подпроектах.

В settings.gradle основного проекта у меня есть:

rootProject.name = 'main-project-name'

include 'sub-project-name'

А в settings.gradle подпроекта у меня есть:

rootProject.name = 'sub-project-name'

1 Ответ

1 голос
/ 11 июля 2020

Многопроектная сборка в Gradle может иметь несколько build.gradle файлов, но только один settings.gradle файл (обычно в каталоге root проекта). Ваш второй settings.gradle файл определяет вторую установку, которая содержит только один проект. Вы можете проверить это, запустив gradle projects. Просто удалите второй файл settings.gradle, чтобы решить вашу проблему.

Обычно вы можете просто определить имена своих подпроектов, указав соответствующие каталоги, а затем позвонив include. Имя rootProject может быть определено внутри settings.gradle, потому что имя каталога часто не сохраняется в системах контроля версий, таких как Git. Разработчики могут проверять репозиторий в разных каталогах, в результате чего Gradle использует разные имена для проекта root. Если вы хотите, чтобы подпроект имел другое имя, чем его содержащий каталог, используйте include с желаемым именем, а затем измените каталог проекта с помощью project(':foo').projectDir = file('path/to/foo').

...