create - settings gradle module
Gradle excluye un subproyecto específico de la compilación completa (4)
Hasta donde sé, no es posible desactivar o excluir el proyecto después de que se haya incluido en settings.gradle
. Por lo tanto, tal vez se haga de la siguiente manera en settings.gradle
:
include ''p1'', ''p2'', ''p3''
if (any_condition_here) {
include ''functional-tests''
}
Se requerirá una comprobación adicional en build.gradle
- para configurar el proyecto si está incluido.
Lo que también me viene a la cabeza es -a
cambio de línea de comando, mira aquí . Tal vez podría ser útil de alguna manera.
En nuestro proyecto Gradle, queremos agregar un nuevo módulo para pruebas funcionales que necesita poder acceder a dependencias de otros subproyectos pero que aún no se puede ejecutar como parte de la compilación completa del proyecto. Si intento esto, aún se construye:
def javaProjects() {
return subprojects.findAll { it.name != ''functional-tests'' }
}
configure(javaProjects()) {
...
}
project('':functional-tests'') {
....
}
El resultado es el mismo incluso si muevo la compilación de pruebas funcionales a un archivo separado de build.gradle propio. ¿Alguien puede señalar cómo lograr esto?
Encontré una mejor solución para excluir que las pruebas funcionales se ejecuten en la línea de comandos o a través del archivo de compilación.
Por ejemplo, para ejecutar todas las pruebas excepto las pruebas funcionales, ejecute:
$ gradle check -x :functional-tests:check
Luego, al construir el proyecto, puede permitir que el subproyecto se construya pero excluya la ejecución de sus pruebas.
$ gradle clean assemble -x :functional-tests:check
Una mejor opción es desactivar las pruebas funcionales en su archivo de construcción a menos que se establezca una propiedad. Por ejemplo, en tu build.gradle
deberías agregar:
project(''functional-tests'') {
test {
onlyIf {
project.hasProperty("functionalTests")
}
}
}
De esta forma, las pruebas funcionales siempre se saltan a menos que especifique una propiedad de compilación específica:
$ gradle check
$ gradle -PfunctionalTests check
¡Espero que ayude!
No puede excluir el subproyecto, pero puede deshabilitar las tareas de subproyecto:
gradle.taskGraph.whenReady {
gradle.taskGraph.allTasks.each {
if(it.project == project) {
it.onlyIf { false }
}
}
}
Lo hago así:
//for all sub projects
subprojects {
if (it.name != ''project name'') {
//do something
}
}
de esta manera, puedo excluir algún proyecto especial en subprojects
.
también puedes usarlo en allprojects
project
o project
.