Support build agnostic external plugin SPI with dynamic lookups
- Lingua principale
- Java
- Stelle
- 5.6k
- Fork
- 559
- Merge medio
- 1g 14h
- PR unite (30g)
- 43
Descrizione
Currently adding a [custom plugin](https://github.com/diffplug/spotless/blob/main/CONTRIBUTING.md#how-to-add-a-new-plugin-for-a-build-system) requires adaptations to the Maven/Gradle plugin as
a) [FormatterStepFactory](https://github.com/diffplug/spotless/blob/main/plugin-maven/src/main/java/com/diffplug/spotless/maven/FormatterStepFactory.java#L22) and
b) [FormatterFactory](https://github.com/diffplug/spotless/blob/main/plugin-maven/src/main/java/com/diffplug/spotless/maven/FormatterFactory.java#L52) or [FormatExtension](https://github.com/diffplug/spotless/blob/b2a2cbb8b6026397c0adb8cb8b3571e399276f9b/plugin-gradle/src/main/java/com/diffplug/gradle/spotless/FormatExtension.java#L79)
are
a) not build system agnostic and
b) are not dynamically looked up
It would be beneficial to have a build-agnostic plugin SPI which allows to
a) load dependencies
b) pass configuration
c) dynamically lookup services from classpath (e.g. with https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/ServiceLoader.html)
For Maven the mechanism for adding additional classes to the plugin classpath is via [plugin dependencies](https://maven.apache.org/guides/mini/guide-configuring-plugins.html#Using_the_.3Cdependencies.3E_Tag). I hope that Gradle provides something similar.
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Inizia leggendo CONTRIBUTING.md e gli entry point FormatterStepFactory, FormatterFactory e FormatExtension collegati, nei plugin Maven e Gradle. Confronta il modo in cui ciascuno aggiunge attualmente plugin personalizzati e analizza i riferimenti a ServiceLoader e alle dipendenze dei plugin Maven menzionati nell’issue. Il lavoro è completato quando uno SPI indipendente dal sistema di build può caricare dipendenze, accettare la configurazione e scoprire dinamicamente servizi esterni per entrambe le integrazioni.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- java
- Ambito
- build-system, tooling
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 30/100