Использование вывода testCompile из другого подпроекта (Gradle Kotlin DSL) - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть несколько служебных файлов в тестовых источниках в одном из моих подпроектов gradle, и я хотел бы использовать их в другом подпроекте. Мой «исходный» подпроект называется core, а тот, который использует его, называется tem.

Я пытаюсь мигрировать и интегрировать следующий пример :

In your Server project:

configurations {
    testArtifacts.extendsFrom testCompile
}
task testJar(type: Jar) {
    classifier "test"
    from sourceSets.test.output
}
artifacts {
    testArtifacts testJar
}

In your ServerWeb project:

testCompile project(path: ":Server", configuration: 'testArtifacts')

Насколько я понимаю, веду разговор. Я добавил следующее к своему core.gradle.kts:

val testConfig = configurations.create("testArtifacts") {
    extendsFrom(configurations["testCompile"])
}

tasks.register("testJar", Jar::class.java) {
    classifier += "test"
    from(sourceSets["test"].output)
}

artifacts {
    add("testArtifacts", tasks.named<Jar>("testJar") )
}

И попытался сослаться на это в tem.gradle.kts:

testImplementation(project(":core", "testArtifacts"))

Он компилируется, но я все еще не могу получить доступ к классам из ядра.

Где я что-то упустил?

1 Ответ

0 голосов
/ 30 июля 2019

Большая часть вашего кода должна быть в порядке

Но вы должны определить classesDirs для jar

tasks.register<Jar>("testJar") {
    dependsOn("testClasses")
    archiveBaseName.set("${project.name}-test")
    from(sourceSets["test"].output.classesDirs)
}

Я также добавил, зависит от testClasses, чтобы быть уверенным, что классы скомпилированы.

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

...