In meinem J2EE-Projekt habe ich einige Abhängigkeiten, die in keinem Maven-Repository verfügbar sind, da es sich um proprietäre Bibliotheken handelt. Diese Bibliotheken müssen zur Laufzeit verfügbar sein, damit sie in das Ziel /.../ WEB-INF / lib ... kopiert werden können.
Im Moment liste ich sie als Systemabhängigkeit in meinem POM auf, aber bei dieser Methode besteht das Problem darin, dass sie während der Kompilierung nicht in den Zielbuild kopiert werden. Auch diese Methode ist nicht sehr elegant.
Was ist der beste Weg, um sie in Maven zu integrieren?
Hinweis: Ich möchte kein eigenes Maven-Repository erstellen.
java
maven-2
build-process
Samson
quelle
quelle
Antworten:
Wie Sie bereits gesagt haben, möchten Sie kein eigenes Repository einrichten. Vielleicht hilft dies.
Sie können das Ziel der Installationsdatei des maven-install-plugins verwenden, um eine Datei im lokalen Repository zu installieren. Wenn Sie für jede Datei ein Skript mit einem Maven-Aufruf erstellen und neben den Jars aufbewahren, können Sie (und alle anderen Benutzer mit Zugriff) die Jars (und die zugehörigen POM-Dateien) problemlos in ihrem lokalen Repository installieren.
Beispielsweise:
oder nur
Sie können dann wie gewohnt auf die Abhängigkeiten in Ihrem Projekt verweisen.
Am besten richten Sie jedoch ein internes Remote-Repository ein, und ich würde empfehlen, Nexus selbst zu verwenden. Es kann bei Bedarf auf Ihrer Entwicklungsbox ausgeführt werden, und der Overhead ist minimal.
quelle
Für Leute, die eine schnelle Lösung für dieses Problem suchen:
Geben Sie Ihrer Bibliothek einfach eine eindeutige Gruppen-ID und einen eindeutigen Artefaktnamen und zeigen Sie darauf, wo sie sich im Dateisystem befindet. Du bist startklar.
Natürlich ist dies eine schmutzige Schnellkorrektur, die NUR auf Ihrem Computer funktioniert und wenn Sie den Pfad zu den Bibliotheken nicht ändern. Aber manchmal ist das alles, was Sie wollen, um ein paar Tests durchzuführen.
BEARBEITEN: Stellen Sie die Frage einfach erneut und stellen Sie fest, dass der Benutzer meine Lösung bereits als vorübergehende Lösung verwendet hat. Ich werde meine Antwort als schnelle Hilfe für andere hinterlassen, die zu dieser Frage kommen. Wenn jemand damit nicht einverstanden ist, hinterlasse mir bitte einen Kommentar. :) :)
quelle
Erstellen Sie einen Repository-Ordner unter Ihrem Projekt. Lass uns nehmen
Installieren Sie dann Ihr benutzerdefiniertes Glas in diesem Repo:
Zuletzt fügen Sie den Projekten pom.xml die folgenden Repo- und Abhängigkeitsdefinitionen hinzu:
quelle
/
(dh einen Ordner angibt), wird das Repo mit groupId erstellt. Beispiel: Wenn die Gruppen-IDfoo.com
und localRepositoryPath lautetrepo
, wird der Repo-Ordnerrepo.foo.com
.Sie müssen ein lokales Repository einrichten, in dem solche Bibliotheken gehostet werden. Es gibt eine Reihe von Projekten, die genau das tun. Zum Beispiel Artifactory .
quelle
Keine der Lösungen funktioniert, wenn Sie Jenkins Build verwenden !! Wenn pom auf dem Jenkins-Buildserver ausgeführt wird, schlagen diese Lösungen fehl, da Jenkins pom versucht, diese Dateien aus dem Unternehmensrepository herunterzuladen.
Kopieren Sie die Jars unter src / main / resources / lib (erstellen Sie den lib-Ordner). Diese sind Teil Ihres Projekts und reichen bis zum Bereitstellungsserver. Stellen Sie auf dem Bereitstellungsserver sicher, dass Ihre Startskripts src / main / resources / lib / * im Klassenpfad enthalten. Viola.
quelle
Sie können sie in einem privaten, lokalen Repository installieren (z. B. .m2 / Repository in Ihrem Home-Verzeichnis): Weitere Details finden Sie hier
quelle
Wenn ich gut verstehe, dass Sie Abhängigkeiten während der Kompilierungsphase exportieren möchten, damit Sie nicht alle benötigten Bibliotheken manuell abrufen müssen, können Sie das Mojo verwenden -Kopierabhängigkeiten verwenden .
Hoffe, es kann in Ihrem Fall nützlich sein ( Beispiele )
quelle
Die Lösung von @Ric Jafe hat bei mir funktioniert.
Genau das habe ich gesucht. Eine Möglichkeit, es für Forschungstestcode durchzusetzen. Nichts Besonderes. Ja, ich weiß, dass das alle sagen :) Die verschiedenen Maven-Plugin-Lösungen scheinen für meine Zwecke übertrieben zu sein. Ich habe einige Gläser, die mir als Drittanbieter-Bibliotheken mit einer POM-Datei übergeben wurden. Ich möchte, dass es schnell kompiliert / ausgeführt wird. Diese Lösung, die ich trivial an Python angepasst habe, hat für mich Wunder gewirkt. Ausschneiden und in meinen Pom kleben. Python / Perl-Code für diese Aufgabe finden Sie in den folgenden Fragen und Antworten : Kann ich Javen zu Maven 2 Build Classpath hinzufügen, ohne sie zu installieren?
quelle
Verwenden Sie sie weiterhin als Systemabhängigkeit und kopieren Sie sie mit dem Maven-Abhängigkeits-Plugin auf target /.../ WEB-INF / lib ...:
http://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-artifacts.html
quelle
Die Installation alleine hat bei mir nicht funktioniert.
quelle