Frage Wie füge ich lokale JAR-Dateien zu einem Maven-Projekt hinzu?


Wie füge ich lokale JAR-Dateien (noch nicht Teil des Maven-Repositorys) direkt in die Bibliotheksquellen meines Projekts ein?


792
2018-02-10 10:03


Ursprung


Antworten:


Installieren Sie das JAR wie folgt in Ihrem lokalen Maven-Repository:

mvn install:install-file
   -Dfile=<path-to-file>
   -DgroupId=<group-id>
   -DartifactId=<artifact-id>
   -Dversion=<version>
   -Dpackaging=<packaging>
   -DgeneratePom=true

Wo jeder sich bezieht auf:

  <path-to-file>: Der Pfad zu der zu ladenden Datei -> c: \ kaptcha-2.3.jar

<Gruppen-ID>: Die Gruppe, unter der die Datei registriert werden soll, z. B. unter -> com.google.code

<Artefakt-ID>: Der Artefaktname für die Datei, z. B. -> Kaptcha

<Version>: Die Version der Datei -> 2.3

<Verpackung>: die Verpackung der Datei z.B. -> Glas

Referenz


429
2018-02-10 10:08



Sie können lokale Abhängigkeiten direkt hinzufügen (wie in build maven project mit proprietären Bibliotheken inklusive) so was:

<dependency>
    <groupId>com.sample</groupId>
    <artifactId>sample</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/yourJar.jar</systemPath>
</dependency>

1010
2018-03-10 13:02



Zunächst möchte ich diese Antwort dem anonymen stackoverflow-Benutzer anerkennen - ich bin mir ziemlich sicher, dass ich schon ähnliche Antworten hier gesehen habe - aber jetzt kann ich sie nicht finden.

Die beste Option für lokale JAR-Dateien als Abhängigkeit ist das Erstellen eines lokalen Maven-Repositorys. Ein solcher Repo ist nichts anderes als eine richtige Verzeichnisstruktur mit Pom-Dateien darin.

An meinem Beispiel: Ich habe Masterprojekt auf ${master_project} Standort und Unterprojekt1 ist aktiviert ${master_project}/${subproject1}

dann erstelle ich mvn repository in: ${master_project}/local-maven-repo

In Pom-Datei in Unterprojekt1 gefunden ${master_project}/${subproject1}/pom.xml Repository muss angegeben werden, das den Dateipfad als URL-Parameter annehmen würde:

<repositories>
    <repository>
        <id>local-maven-repo</id>
        <url>file:///${project.parent.basedir}/local-maven-repo</url>
    </repository>
</repositories>

Die Abhängigkeit kann wie für jedes andere Repository angegeben werden. Dies macht Ihr Pom-Repository unabhängig. Zum Beispiel, sobald das gewünschte Glas in maven central verfügbar ist, müssen Sie es nur aus Ihrem lokalen Repo löschen und es wird aus dem Standard-Repo gezogen.

    <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.servicebinder</artifactId>
        <version>0.9.0-SNAPSHOT</version>
    </dependency>

Die letzte Sache ist es, die JAR-Datei mit dem Schalter -DlocalRepositoryPath wie folgt zum lokalen Repository hinzuzufügen:

mvn org.apache.maven.plugins:maven-install-plugin:2.5.2:install-file  \
    -Dfile=/some/path/on/my/local/filesystem/felix/servicebinder/target/org.apache.felix.servicebinder-0.9.0-SNAPSHOT.jar \
    -DgroupId=org.apache.felix -DartifactId=org.apache.felix.servicebinder \
    -Dversion=0.9.0-SNAPSHOT -Dpackaging=jar \
    -DlocalRepositoryPath=${master_project}/local-maven-repo

Onece-JAR-Datei wird installiert, so dass MVN-Repo an Code-Repository übergeben werden kann und die gesamte Einrichtung systemunabhängig ist. (Arbeitsbeispiel in GitHub)

Ich stimme zu, dass die Einbindung von JARs in Quellcode-Repos keine gute Praxis ist, aber im echten Leben ist eine schnelle und schmutzige Lösung manchmal besser als eine vollständige Nexus-Repo, um ein Jar zu hosten, das Sie nicht veröffentlichen können.


82
2018-02-27 10:17



Erstellen Sie einen neuen Ordner, sagen wir mal local-maven-repo an der Wurzel Ihres Maven-Projekts.

Fügen Sie einfach ein lokales Repo in Ihr <project> von deinem pom.xml:

<repositories>
    <repository>
        <id>local-maven-repo</id>
        <url>file:///${project.basedir}/local-maven-repo</url>
    </repository>
</repositories>

Dann gehen Sie für jedes externe jar, das Sie installieren möchten, zum Stammverzeichnis Ihres Projekts und führen Sie Folgendes aus:

mvn deploy:deploy-file -DgroupId=[GROUP] -DartifactId=[ARTIFACT] -Dversion=[VERS] -Durl=file:./local-maven-repo/ -DrepositoryId=local-maven-repo -DupdateReleaseInfo=true -Dfile=[FILE_PATH]

75
2018-04-13 14:55



<dependency>
    <groupId>group id name</groupId>
    <artifactId>artifact name</artifactId>
    <version>version number</version>
    <scope>system</scope>
    <systemPath>jar location</systemPath>
</dependency>

24
2018-01-09 08:48



Ich möchte solche Lösung - verwenden maven-install-plugin in der Pom-Datei:

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-install-plugin</artifactId>
            <version>2.5.2</version>
            <executions>
                <execution>
                    <phase>initialize</phase>
                    <goals>
                        <goal>install-file</goal>
                    </goals>
                    <configuration>
                        <file>lib/yourJar.jar</file>
                        <groupId>com.somegroup.id</groupId>
                        <artifactId>artefact-id</artifactId>
                        <version>x.y.z</version>
                        <packaging>jar</packaging>
                    </configuration>
                </execution>
            </executions>
        </plugin>

In diesem Fall können Sie durchführen mvn initialize und jar wird im lokalen maven repo installiert. Jetzt ist dieses Krug bei jedem Schritt auf dieser Maschine verfügbar (vergiss nicht, diese Abhängigkeit wie jede andere maven Abhängigkeit in pom mit einzuschließen) <dependency></dependency> Etikett). Es ist auch möglich, Jar-Installation nicht an zu binden initialize Schritt, aber jeden anderen Schritt, den Sie mögen.


20
2017-07-12 21:58



Ja, du kannst es haben, aber es ist keine gute Idee.

Stattdessen installieren Sie alle diese Gläser zu Maven Repos

Siehe auch


14
2018-02-10 10:06