Es sind meine ersten Tage, in denen ich Maven lerne, und ich habe immer noch Probleme mit den Grundlagen. Ich habe eine externe JAR-Datei (nicht in den öffentlichen Repos verfügbar), auf die ich in meinem Projekt verweisen muss, und ich versuche herauszufinden, was meine beste Option ist.
Es ist ein kleines Projekt ohne zentrales Repository für Bibliotheken, daher muss es entweder ein lokales Repository sein (irgendwie zur Quellcodeverwaltung hinzugefügt, weiß nicht, ob es so funktionieren soll?) Oder die .jar muss gespeichert werden Festplatte außerhalb eines formalen Repositorys.
1) Was ist meine beste Option, um die JAR-Datei mit maven zu den Referenzen meines Projekts hinzuzufügen, da ich möchte, dass sowohl das Projekt als auch die Bibliothek in der Quellcodeverwaltung sind?
2) Ich kann immer noch nicht scheinen, dass Eclipse die Abhängigkeit sieht. Ich habe es manuell zum Abschnitt des POM hinzugefügt und es wird in der Liste der Abhängigkeiten in m2eclipse gut angezeigt. mvn compile und mvn package sind beide erfolgreich, aber das Ausführen des Programms führt zu:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
LibraryStuff cannot be resolved to a type
Dies erfolgt nach dem Bearbeiten des POM als:
<dependency>
<groupId>stuff</groupId>
<artifactId>library</artifactId>
<version>1.0</version>
<systemPath>${lib.location}/MyLibrary.jar</systemPath>
<scope>system</scope>
</dependency>
Sollte ich mvn install: install-file ausführen, obwohl ich dachte, ich hätte die pom.xml bereits wie oben bearbeitet?
Vielen Dank!
mvn install::install-file
: mkyong.com/maven/…mvn install::install-file
in Ihrem lokalen Repository würde bedeuten, dass jeder, der Ihren Quellcode klont, diesen manuellen Schritt ebenfalls ausführen muss. Andernfalls ist der BuildSie können ein In Project Repository erstellen, sodass Sie dies nicht
run mvn install:install-file
jedes Mal tun müssen, wenn Sie an einem neuen Computer arbeiten/groupId/artifactId/version/artifactId-verion.jar
Detail lesen Sie diesen Blog-Beitrag
https://web.archive.org/web/20121026021311/charlie.cu.cc/2012/06/how-add-external-libraries-maven
quelle
mvn install:install-file
die gesamte Verzeichnisstruktur zu verwenden und dann von Ihrem lokalen Repository in Ihr projektinternes Repository zu kopieren.Dies kann leicht erreicht werden, indem das im <dependency> -Element verschachtelte <scope> -Element verwendet wird.
Beispielsweise:
Referenz: http://www.tutorialspoint.com/maven/maven_external_dependencies.htm
quelle
install
Ziel nicht für das abhängige Projekt ausführen können . Ofc mit einem Luftspalt-System und allen Plugins außer dem Installations-Plugin ist eine ziemlich seltene Situation."The POM for … is missing, no dependency information available” even though it exists in Maven Repository
Das Maven-Handbuch sagt dazu Folgendes :
quelle
Update Wir haben seitdem gerade unseren eigenen Nexus-Server installiert, viel einfacher und sauberer.
In unserer Firma hatten wir einige Gläser, von denen wir einige Gläser hatten, die üblich waren, aber nicht in Maven-Repositories gehostet wurden, und wir wollten sie auch nicht in einem lokalen Lager haben. Wir haben ein sehr einfaches mvn (öffentliches) Repo auf Github erstellt (Sie können es jedoch auf jedem Server oder lokal hosten):
Beachten Sie, dass dies nur ideal für die Verwaltung einiger selten wechselnder JAR-Dateien ist
Repo auf GitHub erstellen:
https://github.com/<user_name>/mvn-repo/
Repository in pom.xml hinzufügen
(Beachten Sie, dass sich die vollständige Pfad-Rohdatei etwas vom Repo-Namen unterscheidet.)
Hinzufügen einer Abhängigkeit zum Host (Github oder privater Server)
a. Alles, was Sie wissen müssen, ist, dass Dateien in dem von @glitch
/groupId/artifactId/version/artifactId-version.jar
b angegebenen Muster gespeichert werden . Erstellen Sie auf Ihrem Host die Ordner, die diesem Muster entsprechen.
Wenn Sie also eine JAR-Datei mit dem Namen haben
service-sdk-0.0.1.jar
, erstellen Sie den Ordnerservice-sdk/service-sdk/0.0.1/
und legen Sie die JAR-Dateiservice-sdk-0.0.1.jar
darin ab.c. Testen Sie es, indem Sie versuchen, das Glas von einem Browser herunterzuladen (in unserem Fall:
https://github.com/<user_name>/mvn-repo/raw/master/service-sdk/service-sdk/0.0.1/service-sdk-0.0.1.jar
Fügen Sie Ihrer pom.xml-Datei eine Abhängigkeit hinzu:
Genießen
quelle
Verwenden Sie nicht systemPath. Im Gegensatz zu dem, was die Leute hier gesagt haben, können Sie ein externes Glas in einen Ordner unter Ihrem ausgecheckten Projektverzeichnis legen und Maven findet es wie andere Abhängigkeiten. Hier sind zwei entscheidende Schritte:
Es ist ziemlich einfach und Sie finden hier ein schrittweises Beispiel: http://randomizedsort.blogspot.com/2011/10/configuring-maven-to-use-local-library.html
quelle
Maven-Methode zum Hinzufügen von Nicht-Maven-Gläsern zum Maven-Projekt
Maven Project und Nicht-Maven-Gläser
Fügen Sie die Maven-Installations-Plugins in Ihren Build-Bereich ein
Fügen Sie die Abhängigkeit hinzu
Referenzen Hinweis Ich bin der Eigentümer des Blogs
quelle
Wenn Sie auf dasselbe Problem stoßen und Spring-Boot v1.4 + verwenden , können Sie dies auf diese Weise tun.
Es gibt ein includeSystemScope , mit dem Sie dem JAR Abhängigkeiten vom Systembereich hinzufügen können.
z.B
Ich verwende Oracle-Treiber in meinem Projekt.
Machen Sie dann includeSystemScope = true, um das JAR in den Pfad / BOOT-INF / lib / ** aufzunehmen
und von der Ressource ausschließen, um doppelte Einschlüsse zu vermeiden, das Glas ist fett genug ~
Viel Glück!
quelle
Ändern Sie Ihren Systempfad .
quelle
In der Datei pom.xml wird in Ihrem lokalen Repository nach der Abhängigkeit gesucht, die Ihrem Artefakt entspricht. Außerdem sollten Sie den Systembereich oder die systemPath-Attribute nicht wirklich verwenden. Diese sind normalerweise für Dinge reserviert, die sich im JDK und nicht in der JRE befinden
In dieser Frage erfahren Sie, wie Sie Maven-Artefakte installieren.
quelle
Beachten Sie, dass alle Beispiele, die verwenden
erfordern äußere
Tags einschließen. Aus einigen Beispielen ist dies nicht ersichtlich.
quelle
Die beste Lösung besteht darin, ein Repository zu installieren: Nexus oder Artifactory. Wenn Sie einen Platz haben, an dem Sie solche Dinge platzieren können, beschleunigt dies die Dinge, indem Sie Ihre Sachen von außen zwischenspeichern.
Wenn es sich um Open Source handelt, können Sie auch in Betracht ziehen , es in die Zentrale zu integrieren.
Siehe die Anleitung .
quelle
Mit Eclipse Oxygen können Sie Folgendes tun:
Maven übernimmt sie bei der Installation des Projekts.
quelle
Wenn das externe JAR nur von einem Maven-Projekt erstellt wird, können Sie das gesamte Projekt auf Ihr System kopieren und a ausführen
im Projektverzeichnis. Dadurch wird das JAR in das Verzeichnis .m2 eingefügt, das das lokale Maven-Repository ist.
Jetzt können Sie die hinzufügen
Dies wird sicherstellen, dass Sie
funktioniert. Wenn Sie hier vorgeschlagen verwenden
Dann müssen Sie Klassen einzeln hinzufügen, während Sie die Ausführung über die Befehlszeile verwenden.
Sie können die externen Gläser mit dem folgenden hier beschriebenen Befehl hinzufügen
quelle
Der effizienteste und sauberste Weg, um dieses Problem zu lösen, ist die Verwendung von Github-Paketen
Erstellen Sie auf GitHub ein einfaches leeres öffentliches / privates Repository gemäß Ihren Anforderungen, unabhängig davon, ob Ihr externes JAR öffentlich gehostet werden soll oder nicht.
Führen Sie den folgenden Befehl aus, um Ihr externes JAR im oben erstellten Github-Repository bereitzustellen
mvn deploy:deploy-file \ -DgroupId= your-group-id \ -DartifactId= your-artifact-id \ -Dversion= 1.0.0 -Dpackaging= jar -Dfile= path-to-file \ -DrepositoryId= id-to-map-on-server-section-of-settings.xml \ -Durl=https://maven.pkg.github.com/github-username/github-reponame-created-in-above-step
Mit dem obigen Befehl wird Ihr externes JAR im GitHub-Repository bereitgestellt, das in erwähnt wird
-Durl=
. Sie können diesen Link unter Bereitstellen von Abhängigkeiten als GitHub-Pakete lesen. GitHub-Paketbereitstellungs-LernprogrammDanach können Sie die Abhängigkeit unter Verwendung hinzufügen
groupId
,artifactId
undversion
erwähnt in obigen Schritt in Mavenpom.xml
und Laufmvn install
Maven ruft die Abhängigkeit von externem JAR aus der Registrierung von GitHub Packages ab und stellt sie in Ihrem Maven-Projekt bereit.
Damit dies funktioniert, müssen Sie auch Ihre Maven so konfigurieren, dass
settings.xml
sie aus der GitHub Package-Registrierung abgerufen werden.quelle