HintergrundUnterstützt das Java 9 Module System optionale Abhängigkeiten?
In Maven kann ein Artefakt eine Abhängigkeit mit
<optional>true</optional>
erklären, was bedeutet, dass die Abhängigkeit nicht erforderlich, kann aber, falls vorhanden verwendet werden.
The State of the Module System scheint anzugeben, dass ein Modul nur Module lesen kann, die es benötigt.
Fragen
- das Java 9 Modulsystem unterstützt in der Tat nicht optionale Abhängigkeiten?
- Warum nicht?
- Welche Alternativen zu optionalen Abhängigkeiten bietet das Java 9-Modulsystem?
Use Case
Ich habe einen Rahmen, die verschiedenen Bibliotheken integriert, die nicht von einer Anwendung verwendet werden können oder nicht. Derzeit ist dieses Framework ein einzelnes JAR, das den Klassenpfad widerspiegelt, um den Integrationscode für fehlende Bibliotheken zu überspringen.
Ich denke, wir könnten dies in ein separates Modul für jede Konfiguration aufteilen, aber dies würde eine kombinatorische Explosion in der Anzahl der JARs verursachen, weil wir nicht nur eine separate JAR für jede optionale Abhängigkeit benötigen, sondern auch eine separate JAR für die meisten Paare von optionalen Abhängigkeiten ...
Zukünftige Referenz: Wissen Sie, ob der optionale Abhängigkeitsvorschlag tatsächlich zur endgültigen Version gemacht wurde? – Lii
Es gibt noch keine endgültige Version (Java 9 für Juli 2017 geplant), aber es ist immer noch Teil der EA-Builds und die Chance, dass es an der Grenze auf Null herausgenommen wird. – Nicolai