Fügen Sie eine Abhängigkeit in Maven hinzu

134

Wie nehme ich eine JAR-Datei, die ich habe, und füge sie dem Abhängigkeitssystem in Maven 2 hinzu? Ich werde der Betreuer dieser Abhängigkeit sein und mein Code benötigt dieses JAR im Klassenpfad, damit es kompiliert werden kann.

Milhous
quelle

Antworten:

139

Sie müssen dies in zwei Schritten tun:

1. Geben Sie Ihrer JAR eine Gruppen-ID, eine Artefakt-ID und eine Version und fügen Sie sie Ihrem Repository hinzu.

Wenn Sie kein internes Repository haben und nur versuchen, Ihre JAR zu Ihrem lokalen Repository hinzuzufügen, können Sie sie wie folgt installieren, indem Sie eine beliebige groupId / artefaktIds verwenden:

mvn install:install-file -DgroupId=com.stackoverflow... -DartifactId=yourartifactid... -Dversion=1.0 -Dpackaging=jar -Dfile=/path/to/jarfile

Sie können es auch in Ihrem internen Repository bereitstellen, wenn Sie eines haben, und dies anderen Entwicklern in Ihrer Organisation zur Verfügung stellen. Ich verwende nur die webbasierte Oberfläche meines Repositorys, um Artefakte hinzuzufügen, aber Sie sollten in der Lage sein, dasselbe mit zu erreichen mvn deploy:deploy-file ....

2. Aktualisieren Sie abhängige Projekte, um auf diese JAR zu verweisen.

Aktualisieren Sie dann die Abhängigkeit in der Datei pom.xml der Projekte, die die JAR verwenden, indem Sie dem Element Folgendes hinzufügen:

<dependencies>
    ...
    <dependency>
        <groupId>com.stackoverflow...</groupId>
        <artifactId>artifactId...</artifactId>
        <version>1.0</version>
    </dependency>
    ...
</dependencies>
Jack Leow
quelle
3
Können Sie weitere Details zur Bereitstellung hinzufügen? Wir haben ein internes Repository, und ich möchte meine lokal installierte JAR-Datei in diesem Repository bereitstellen, damit auch andere Entwickler und unser Build-Server das JAR erhalten.
Kieveli
Diese Antwort sollte alle Likes bekommen! Ich habe dies verwendet, um erfolgreich Abhängigkeiten für meine Maven-Projekte sowohl auf Google App Engine als auch auf Heroku hinzuzufügen.
Leo C Han
93

Sie können auch eine Abhängigkeit angeben, die sich nicht in einem Maven-Repository befindet. Kann nützlich sein, wenn kein zentrales Maven-Repository für Ihr Team vorhanden ist oder wenn Sie einen CI- Server haben

    <dependency>
        <groupId>com.stackoverflow</groupId>
        <artifactId>commons-utils</artifactId>
        <version>1.3</version>
        <scope>system</scope>
        <systemPath>${basedir}/lib/commons-utils.jar</systemPath>
    </dependency>
Frederic Morin
quelle
4
Kann ich mich auf eine andere POM-Datei anstelle eines Glases verlassen?
Jayen
45

Bei der Untersuchung denke ich, dass all diese Antworten falsch sind. Ihre Frage ist aufgrund unseres Verständnisses von irreführend maven. Und ich sage unser, weil ich gerade erst vorgestellt werdemaven .

In Eclipse, wenn Sie eine JAR - Datei zu einem Projekt hinzugefügt werden soll, normalerweise Sie das Glas manuell herunterladen und dann fallen in das lib - Verzeichnis. Mit Maven machst du das nicht so. Folgendes tun Sie:

  • Gehe zu mvnrepository
  • Suchen Sie nach der Bibliothek, die Sie hinzufügen möchten
  • Kopieren Sie die dependencyAnweisung in Ihrepom.xml
  • umbauen über mvn

Jetzt mavenwird die Verbindung jarzusammen mit der Liste der Abhängigkeiten hergestellt und heruntergeladen , und alle zusätzlichen Abhängigkeiten, die jarmöglicherweise vorhanden waren , werden automatisch aufgelöst . Wenn also jarauch die Commons-Logging benötigt wird, wird diese ebenfalls heruntergeladen.

Kieveli
quelle
5
Ich verwende die Spring Tool Suite (basierend auf Eclipse). Führen Sie nach den Schritten 1 und 2 in der obigen Lösung Folgendes aus: 1. Öffnen Sie pom.xml im STS-Editor und klicken Sie unten auf die Registerkarte "Abhängigkeiten". 2. Klicken Sie in der Gruppe "Abhängigkeiten" auf "Hinzufügen". 3. Kopieren Sie die Abhängigkeitsinformationen der Registerkarte "Maven" aus dem Browserfenster (fügen Sie sie ein). Gruppen-ID, Artefakt-ID, Version) in die entsprechenden Felder im Popup "Abhängigkeit auswählen" in STS 4. Klicken Sie auf OK. 5. pom.xml speichern Nach dem Speichern wird mein Maven-Verzeichnis auf der Festplatte und die Maven-Abhängigkeitseinstellung in STS innerhalb von Sekunden aktualisiert. Sie können die XML-Datei direkt bearbeiten. Mit dem Tool können Sie jedoch Probleme mit dem XML-Format vermeiden.
Chris R
2
Dies ist in der Tat die bevorzugte Methode, um Dinge zu tun, aber es gibt Situationen, in denen Sie dies nicht tun können (z. B. proprietäres JAR, das sich nicht im MVNREpository befindet). In diesem Fall benötigen Sie eine Möglichkeit, es "manuell" hinzuzufügen. In diesem Fall hätte eine andere Antwort die Lösung.
Thunderforge
Es ist auch möglich, dass die gestellte Frage weniger eine Anfängerfrage war. Ich habe dies für Leute verwendet, die etwas ohne die richtige Formulierung tun möchten, die aus der Zeit stammt, die sie mit Maven verbracht haben. (Wie ich zu der Zeit war)
Kieveli
KISS Vielen Dank, ich habe gelesen, dass dies das C # Nuget-Äquivalent in Java ist, aber ich habe versucht herauszufinden, auf welche Schaltfläche geklickt oder welche cmd ausgeführt werden soll. Nicht gerade 1: 1, macht aber den Job.
Terrance
Wie erstelle ich ein Projekt in Maven in IntelleJ neu?
Irfan Nasim
14

Ich würde das tun:

  1. füge die Abhängigkeit hinzu, wie du willst in deinem Pom:

    <dependency>
            <groupId>com.stackoverflow...</groupId>
            <artifactId>artifactId...</artifactId>
            <version>1.0</version>
    </dependency>

  2. Wenn mvn installSie es ausführen , wird versucht, das Glas herunterzuladen, und es schlägt fehl. Während des Vorgangs erhalten Sie den vollständigen Befehl zum Installieren des JAR mit der Fehlermeldung. Kopieren Sie diesen Befehl und führen Sie ihn aus! einfach huh?!

user40032
quelle
3

Ich gehe davon aus, dass Sie fragen, wie Sie eine Abhängigkeit in ein "bekanntes Repository" verschieben können, und nicht nur, wie Sie Ihr POM aktualisieren.

Wenn ja, dann das hier ist , was Sie lesen wollen.

Wenn Sie einen internen Repository-Server einrichten möchten, klicken Sie hier (die Hälfte des Problems bei der Verwendung von Maven 2 besteht darin, die Dokumente zu finden).

kdgregory
quelle
Ich möchte selbst eine Abhängigkeit aufrechterhalten. Dies ist eine hauseigene Bibliothek.
Milhous