Ich habe ein Maven-Projekt, das eine Reihe von Bibliotheksabhängigkeiten hat, die nicht über irgendein Maven-Repository verfügbar sind. Wie kann ich diese Bibliotheken zum Pom hinzufügen? Ich möchte dies tun, wenn ich "mvn eclipse: eclipse" starte, werden diese Bibliotheken nicht aus dem Eclipse-Klassenpfad entfernt.Maven, wie man zusätzliche Bibliotheken hinzufügt, die nicht in Repo verfügbar sind
Antwort
Sie haben 3 Optionen:
- Fügen Sie Ihre Bibliotheken zu Ihrem lokalen Repository über
install:install-file
(natürlich nicht tragbar ist, werden Sie nicht in der Lage sein, das Projekt auf einer anderen Maschine zu bauen, ohne dabei das Gleiche). - Installieren und starten Sie ein "Enterprise-Repository" wie Nexus, Archiva oder Artifactory und fügen Sie Ihre Bibliotheken über
deploy:deploy-file
hinzu. - Richten Sie ein dateibasiertes Repository ein, wie in dieser previous answer beschrieben, und legen Sie Ihre Bibliotheken dort hinein.
Dann deklarieren Sie Ihre Bibliotheken in Ihrem Pom wie jede andere Abhängigkeit.
Sie können sie nicht zum Pom hinzufügen. Sie müssen sie in ein Repo stecken. Sie können sie mit dem maven-install-plugin in das lokale Repo einfügen, wie in der Fehlermeldung vorgeschlagen. Oder Sie können sie in einer lokalen Kopie von Nexus oder ähnlichem bereitstellen.
Sie können es als eine Abhängigkeit mit system
Geltungsbereich erklären.
<project>
...
<dependencies>
<dependency>
<groupId>sun.jdk</groupId>
<artifactId>tools</artifactId>
<version>1.5.0</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
</dependencies>
...
</project>
Sie können sie mit Ihrem Projekt in ein Unterverzeichnis aufnehmen (vielleicht lib /). Sie können auch .bat- und/oder .sh-Dateien bereitstellen, die alle entsprechenden Aufrufe für das maven-install-plugin enthalten, die für jedes Projektmitglied (oder Server env) erforderlich sind, um diese jars zum lokalen Repo hinzuzufügen.
Dieser Ansatz ermöglicht es neuen Projektmitgliedern, & schnell zu laufen, ohne mehrere Stunden in die Einrichtung eines neuen öffentlichen Repos für Ihr Projekt oder Team investieren zu müssen.
Ich habe kürzlich eine kleine UI Util erstellt, um Bibliotheken in Ihrem lokalen Repository zu installieren. Es funktioniert genauso wie install:install-file
.
Bitte fügen Sie Code ein, wie das funktioniert, anstatt nur einen Link. – krillgar
Das ist kein Code erforderlich, da es eine kleine ausführbare UI-Anwendung ist. Der Download-Link lautet: [https://github.com/escv/maven-install-ui/raw/master/maven-install-ui/dist/maven-install-ui-0.0.1-with-dependencies.jar] (https://github.com/escv/maven-install-ui/raw/master/maven-install-ui/dist/maven-install-ui-0.0.1-with-dependencies.jar) –
haupt nicht zu empfehlen! Dies ist ein Hack, Systemumfang ist nicht für diesen Zweck gedacht und dies als Nachteile/Nebenwirkungen. –
Ich stimme dir nicht zu. Die Frage sagt nichts über den beabsichtigten Gebrauch aus. Er muss es hinzufügen, damit die Eclipse es nicht aus dem Klassenpfad entfernt. – YuppieNetworking
Für jedes ernsthafte Projekt, das später Dinge wie das Assembly-Plugin verwenden kann, möchten Sie den Systembereich nicht verwenden. Das ist nur eine schlechte Übung, ich empfehle es nicht. –