. Si j'essaye, cela se construit toujours:
def javaProjects() {
return subprojects.findAll { it.name != 'functional-tests' }
}
configure(javaProjects()) {
...
}
project(':functional-tests') {
....
}
Le résultat est le même, même si je déplace la génération de tests fonctionnels vers un fichier build.gradle distinct. Quelqu'un peut-il indiquer comment y parvenir?
J'ai trouvé une meilleure solution pour exclure les tests fonctionnels de s'exécuter sur la ligne de commande ou via le fichier de construction.
Par exemple, pour exécuter tous les tests à l'exception des tests fonctionnels, exécutez:
$ gradle check -x :functional-tests:check
Ensuite, lors de la construction du projet, vous pouvez laisser le sous-projet se construire mais exclure leurs tests de l'exécution.
$ gradle clean assemble -x :functional-tests:check
Une meilleure option consiste à désactiver les tests fonctionnels dans votre fichier de construction, sauf si une propriété est définie. Par exemple, dans votre build.gradle
vous ajouteriez:
project('functional-tests') {
test {
onlyIf {
project.hasProperty("functionalTests")
}
}
}
De cette façon, les tests fonctionnels sont toujours ignorés sauf si vous spécifiez une propriété de construction spécifique:
$ gradle check
$ gradle -PfunctionalTests check
J'espère que cela pourra aider!
Autant que je sache, il n'est pas possible de désactiver ou exclure le projet après il a été inclus dans settings.gradle
. Par conséquent, cela peut être fait de la manière suivante dans settings.gradle
:
include 'p1', 'p2', 'p3'
if (any_condition_here) {
include 'functional-tests'
}
Cela nécessitera un enregistrement supplémentaire build.gradle
- pour configurer le projet s'il est inclus.
Ce qui me vient aussi à l'esprit est -a
commutateur de ligne de commande, voir ici . Peut-être que cela pourrait être utile d'une manière ou d'une autre.
Vous ne pouvez pas exclure le sous-projet, mais vous pouvez désactiver les tâches de sous-projet:
gradle.taskGraph.whenReady {
gradle.taskGraph.allTasks.each {
if(it.project == project) {
it.onlyIf { false }
}
}
}
Je le fais comme ça:
//for all sub projects
subprojects {
if (it.name != 'project name') {
//do something
}
}
de cette façon, je peux exclure certains projets spéciaux dans subprojects
.
vous pouvez également l'utiliser dans allprojects
ou project
.