Ich habe ein von SBT verwaltetes Scala-Projekt, das eine Reihe von Klassen enthält, bei denen es sich um Adapter handelt, die mit proprietärem Code verknüpft sind. Diese verfügen über kommerzielle Lizenzen, die die Verteilung von verknüpften Bibliotheken sowie den von mir selbst geschriebenen Adaptercode ausschließen.Wie strukturiere ich ein JVM-Projekt, um proprietären Code zu isolieren?
Ich möchte diese Adapter vom Rest meines Codes isolieren, so dass ich theoretisch mein Projekt als Open-Source verteilen könnte. Ich muss sicherstellen, dass jeder Adapter
- ist Version separat gesteuert wird.
- selektiv on/off während der Kompilierung & JAR Schaffung geschaltet werden
Was sollte die Verzeichnisstruktur in etwa so aussehen (wie --with-xxx
Art, wenn ./configure
in einem C-Projekt ausgeführt wird)? Was ist mit den SBT-Projekten? Ich möchte, wenn möglich, die übliche Verzeichnisstruktur von Gradle einhalten. Das zu berücksichtigende Problem ist, dass jeder Adapter vom Kernprojekt abhängt (d. H. Er erbt eine im Hauptprojekt definierte Schnittstelle Adapter
), und sein Kernprojekt hängt wiederum von einzelnen Adaptern ab. Ich bin mir also nicht sicher, wie ich das einrichten soll, um zirkuläre Abhängigkeiten zu vermeiden, während ich den Kerncode vom Adaptercode isoliere.
Sind die Abhängigkeiten der Adapter auf dem Kernprojekt für die Kompilierung benötigt der Haupt Quellcode oder nur für die Tests? – Teliatko