Sono in procinto di alzare la mia prima lib Java OSS (GitHub / Maven) che una comunità di hardware open source farà un uso equo / moderato di
.Sto scrivendo questa libreria con Java 8 e gestendo la sua build con Gradle 2.4. Più tardi quest'anno Java 9 sarà rilasciato e mi piacerebbe mantenere attivamente versioni separate della libreria (una per ogni versione della JVM) per diversi motivi:
- Il supporto delle funzionalità e della lingua di Java 9 può portare a miglioramenti delle prestazioni e dell'API
- Ma forzare la libreria a richiedere Java 9 pone indebite difficoltà a grandi applicazioni che non sono pronte ad aggiornarlo
- Quindi supportando (ovvero, continuando a creare versioni periodiche per) sia in parallelo rende tutti felici
Sono combattuto tra la creazione di questi sottoprogetti di Gradle sotto lo stesso repository o il loro inserimento nei loro progetti di livello superiore. Quindi:
- Un singolo
myawesomelib
progetto di primo livello conjava8/
ejava9/
sottoprogetti sotto di esso; o - Due progetti separati di
myawesomelib-java8
emyawesomelib-java9
di livello superiore; o - Qualcos'altro?
La mia inclinazione è di andare con 2 progetti di primo livello separati a fini di CI (in modo che il commit a uno non inneschi le build sull'altro), ma non ho mai avuto a che fare con questo problema prima.
Quindi tutto questo per chiedersi: quali sono alcune tecniche comuni per gestire il supporto di più versioni di JVM nelle librerie OSS e quali sono le loro strutture in Gradle che possono aiutare a implementare queste tecniche?