Ich habe eine Abhängigkeit, die ich im lokalen Maven-Repository installiert habe und die lokal verwendet wird, aber nicht auf dem Deployment-Server verfügbar ist. Ich verwende diese Abhängigkeit mit Class.forName(...)
, so dass es kein Problem gibt, wenn es vom Klassenpfad auf dem Deployment Server verpasst wird.
Gibt es eine Möglichkeit, Maven zu sagen, eine Abhängigkeit zu ignorieren, wenn sie nicht gelöst werden konnte?
Ich glaube nicht, dass <scope>
oder <optional>
dieses Problem lösen kann, aber es ist möglich, dies mit <profiles>
zu tun, wenn es möglich ist, ein Profil basierend auf der Verfügbarkeit von Abhängigkeiten zu aktivieren / deaktivieren.
Kurze Antwort: Nein.
Lange Antwort: Sobald die Abhängigkeit deklariert ist - entweder im gemeinsamen Teil oder in einem aktiven Profil - muss sie auflösbar sein, wenn Maven es versucht; Andernfalls schlägt der Build fehl.
Wenn maven das gewünschte Verhalten zulässt, würde die Reproduzierbarkeit des Builds sehr darunter leiden.
Wenn Unklarheit und Unreproduzierbarkeit für Sie kein Thema ist, hier ein Hinweis, wie Sie es tun können:
In jedem Fall rate ich dringend davon ab, solche Dinge in Maven Build einzubauen. Es kann oft genug genug sein, es als separate Funktionalität zu haben, die über ant von der Kommandozeile aufgerufen wird.
unter der Annahme, dass die fehlende Abhängigkeit nur in der lokalen Umgebung wichtig ist, können Sie eine Kombination aus Profil und Aktivierung über Ihre .m2 / settings.xml
verwendenSie entfernen die Abhängigkeit von Ihren allgemeinen Abhängigkeiten und verschieben sie als referenzierte Abhängigkeit in ein Profil Ihrer pom.xml (Profil auf Projektebene) und aktivieren das Profil über Ihre m2 / settings.xml.
Sie können die Abhängigkeit auch vollständig von Ihrer pom.xml entfernen und die Abhängigkeit in ein Profil verschieben, das sich in Ihrer .m2 / settings.xml (Benutzerprofil) befindet
Siehe Einführung in Profile Abschnitt
ein anderer Weg, der Ihren Bedürfnissen vielleicht besser entspricht
Die Aktivierung des oben genannten Profils basiert auf dem Vorhandensein der Datei in .m2/repository/local/dependency/1.0.0-Snapshot/local.jar
Tags und Links maven