faster -PspotlessIdeHook with configure-on-demand
- Lenguaje dominante
- Java
- Estrellas
- 5.6k
- Forks
- 559
- Merge medio
- 1 d 14 h
- PR fusionados (30 d)
- 43
Descripción
Right now, the IDE hook works like this
```
spotlessApply -PspotlessIdeHook=${ABSOLUTE_PATH_TO_FILE}
```
But for large multiproject projects we could make it significantly faster with (note the leading colon)
```
:spotlessApply -PspotlessIdeHook=${ABSOLUTE_PATH_TO_FILE} --configure-on-demand
```
but only if we modified this code https://github.com/diffplug/spotless/blob/48723eb15b3e6b0ada0841bd78e4dd271af9507f/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessExtensionImpl.java#L54-L56
by adding something like:
```java
if (project == rootProject) {
String ideHookPath = (String) project.property(IdeHook.PROPERTY);
project.gradle.settingsEvaluated { settings ->
// the code below works only for root with children, needs to also handle children with children
ProjectDescriptor owningProject = null;
ProjectDescriptor rootDescriptor = settings.rootProject
for (ProjectDescriptor child : rootDescriptor.children) {
if (ideHookPath.startsWith(child.projectDir.absolutePath)) {
owningProject = child;
}
}
if (owningProject != null) {
project.evaluationDependsOn(owningProject.path)
}
}
}
```
In this way we can avoid evaluating all the `spotlessApply` tasks and instead only evaluate the root project and, if necessary, the project which contains the file in question.
Guía de contribución
Línea de trabajo
Empieza en plugin-gradle/src/main/java/com/diffplug/gradle/spotless/SpotlessExtensionImpl.java, en las líneas referenciadas, y después revisa cómo la evaluación de la configuración de Gradle y los descriptores de proyecto representan los proyectos secundarios anidados. Compara la invocación actual de spotlessApply -PspotlessIdeHook con la forma propuesta con dos puntos inicial y --configure-on-demand. Se considera terminado cuando el hook del IDE evalúa únicamente el proyecto raíz y el proyecto al que pertenece el archivo objetivo, incluidos los proyectos anidados.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java
- Área
- build-system
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 38/100