Wie kann man Maven sagen, eine Abhängigkeit zu ignorieren, wenn es nicht gelöst werden konnte?

9

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.

    
Ali Shakiba 26.02.2011, 09:56
quelle

2 Antworten

5

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:

  • rufe external ant von deiner pom.xml auf, entweder exec-maven-plugin oder maven-antrun-plugin
  • Im ant-Code verwenden Sie Artefakt: Abhängigkeiten von Maven Ant Tasks
  • Umgehe es in trycatch von
  • von ant-contrib

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.

    
Petr Kozelka 08.08.2011 21:23
quelle
0

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

verwenden

Sie 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

%Vor%     
p1brunne 26.05.2011 18:17
quelle

Tags und Links