4 votes

En utilisant la sortie testCompile d'un autre sous-projet (Gradle Kotlin DSL)

J'ai quelques fichiers utilitaires dans les sources de test d'un de mes sous-projets Gradle et je voudrais les utiliser dans un autre sous-projet. Mon sous-projet "source" s'appelle core, tandis que celui qui l'utilise s'appelle tem.

J'essaie de migrer et intégrer l'exemple suivant:

Dans votre projet Server :

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

Dans votre projet ServerWeb :

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

D'après ce que je comprends, voici la conversation. J'ai ajouté ce qui suit à mon 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("testJar") )
}

Et j'ai essayé de m'y référer dans tem.gradle.kts:

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

Il compile, mais je ne peux toujours pas accéder aux classes de core.

Où est-ce que j'ai manqué quelque chose?

3voto

Raino Kolk Points 31

La plupart de votre code devrait aller bien

Mais vous devez définir classesDirs pour jar

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

J'ai également ajouté depends on testClasses pour être sûr que les classes sont compilées.

Vous pouvez vérifier que le jar est correct en exécutant la tâche testJar. Ensuite, vérifiez que le jar généré contient vos classes. Si vous faites une erreur avec l'appel de la méthode from, vous obtiendrez un jar vide.

2voto

user12096006 Points 21

La configuration suivante a fonctionné pour moi pour inclure à la fois les classes de test et les ressources de test :

core build.gradle.kts

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

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

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

tem build.gradle.kts

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X