Ich habe das folgende Problem. Angenommen, ich habe ein Verzeichnis mit einer Reihe von externen Gläsern, die nicht unter meiner Aufsicht stehen. Diese Gläser werden im Verzeichnis lib gespeichertMaven importieren mehrere Gläser in eine Abhängigkeit
lib
|_folder1
| |_jar1.jar
| |_jar2.jar
|_folder2
| |_jar3.jar
|_jar4.jar
Jetzt hat eine neue Version der Bibliothek jedes Mal freigegeben wird ich eine Kopie der lib-Ordner, die ich brauche in meine Anwendung zu integrieren.
Da es viele Gläser darin gibt und ich nicht jedes Mal, wenn ich ein neues Projekt starte oder die Version der Bibliothek ändert, eine Vielzahl von Gläsern integrieren möchte, dachte ich vielleicht, dass ich all diese Gläser in eine gehostete Bibliothek integrieren kann von meinem lokalen Maven-Repository.
Also ist die Idee, ein Skript zu haben, das im gesamten Verzeichnis sucht, nach allen JAR-Dateien sucht und sie in meinem lokalen Repository installiert. Hier
ist, was die erste Version des Skripts wie folgt aussieht:
SET @libPath="C:\path\to\lib"
SET @groupId="group.id.custom.lib"
SET @artifactId="custom-lib"
SET @version="1.0"
SET @packaging="jar"
for /r %@libPath% %%i in (*.jar) do mvn install:install-file^
-Dfile="%%i"^
-DgroupId=%@groupId%^
-DartifactId=%@artifactId%^
-Dversion=%@version%^
-Dpackaging=%@packaging%
Die Idee wäre, nur zu haben, um die Abhängigkeit zu meiner pom.xml-Datei hinzufügen und mit ihm getan werden:
<dependency>
<groupId>group.id.custom.lib</groupId>
<artifactId>custom-lib</artifactId>
<version>[1.0,)</version>
</dependency>
Das Skript durchforstet alle Dateien, legt jedoch nur das gefundene jar in mein lokales Repository und überschreibt das zuvor installierte jar.
Die Frage wäre, ob es einen Weg gibt, dies mit Hilfe eines Skripts zu erreichen.
Grüße
[edit:] Nach den Kommentaren von Essex Boy ich mein Skript dazu angepasst haben:
SET @libPath="C:\path\to\lib"
SET @groupId="group.id.custom.lib"
SET @artifactId="custom-lib"
SET @version="1.0"
SET @packaging="jar"
SET @tempDir="C:\Temp\temp-dir"
SET @tempJar="temp.jar"
if not exist %@tempDir% mkdir %@tempDir%
cd %@tempDir%
del *.* /f /q
for /r %@magicDrawLib% %%i in (*.jar) do copy %%i %@tempDir%
for /r %@tempDir% %%j in (*.jar) do jar -xvf %%j del %%j
jar -cvf %@tempJar% *
mvn install:install-file^
-Dfile=%@tempJar%^
-DgroupId=%@groupId%^
-DartifactId=%@artifactId%^
-Dversion=%@version%^
-Dpackaging=%@packaging%
Welche scheint zu funktionieren. Ich muss die resultierende Maven-Abhängigkeit testen, um sie zu verifizieren.
Vielen Dank für Ihre Antwort, natürlich ist es eine schlechte Idee, den vorhandenen Jar mit einem anderen zu überschreiben, das ist der Grund, warum das Skript nicht funktioniert (Es tut mir leid, wenn ich das nicht in der Anfangsbeitrag). Jedoch scheint mir diese Information nicht zu helfen, alle Gläser in eine Maven-Abhängigkeit zu kombinieren. – Scyla101
Entschuldigen Sie, dass ich Ihre Frage missverstanden habe, warum ändern Sie nicht Ihr Skript, um jedes jar in ein temporäres Verzeichnis zu kopieren, explodieren Sie (jar xvf %% ii) löschen Sie es und erstellen danach ein neues jar (jar cvf temp.jar *) dann fügen Sie die Temp, Glas zu Ihrem Maven Repo. –
Danke für die Antwort. Ich habe meine Frage mit einem Skript aktualisiert, das zu funktionieren scheint. Vielleicht können Sie Ihre Antwort aktualisieren, damit ich Ihnen einen angemessenen Kredit geben kann. – Scyla101