Gradle - использовать зависимость проекта от конфигурации - PullRequest
0 голосов
/ 18 декабря 2018

Я использую Gradle 5.0 и Kotlin DSL.Как включить конфигурацию из другого подпроекта gradle в качестве зависимости от подпроекта?У меня есть следующие настройки:

root
  |--A
  |--B

Теперь в моем проекте B я хочу включить проект A с определенной конфигурацией:

dependencies {
    testImplementation(project(":A", "testUtilsCompile"))
}

Исходные наборы для всех подпроектов определены следующим образом:

project.the<SourceSetContainer>().register("testUtils", {
    java.srcDir("src/test-utils/java")
    resources.srcDir("src/test-utils/resources")
    compileClasspath += project.the<SourceSetContainer>().named("main").get().output
    runtimeClasspath += project.the<SourceSetContainer>().named("main").get().output
})

project.the<SourceSetContainer>().named("test").configure({
    compileClasspath += project.the<SourceSetContainer>().named("testUtils").get().output
    runtimeClasspath += project.the<SourceSetContainer>().named("testUtils").get().output
})


project.configurations.named("testUtilsCompile").get().extendsFrom(project.configurations.named("testCompile").get())
project.configurations.named("testUtilsRuntime").get().extendsFrom(project.configurations.named("testRuntime").get())

Кажется, все работает нормально, пока он находится внутри одного подпроекта, но когда я пытаюсь использовать класс, который находится в наборе исходников testUtils, из другого подпроекта, он не будет работать.У кого-нибудь есть идея, почему?

1 Ответ

0 голосов
/ 19 декабря 2018

На случай, если кто-нибудь споткнется об этом.Я пропустил публикацию артефакта в моем проекте A:

        project.tasks.register("jarTestUtils", Jar::class) {
            classifier = "testUtils"
            from(project.the<SourceSetContainer>().named("testUtils").get().output)
        }

        project.artifacts {
            add("testUtilsCompile", project.tasks.named("jarTestUtils").get())
        }

, после чего я изменил это в своем проекте B:

dependencies {
    testImplementation(project(":A", "testUtilsCompile"))
}

Тогда это работает ..

...