745 Stimmen

Kann ich Jars zum Maven 2 Build-Klassenpfad hinzufügen, ohne sie zu installieren?

Maven 2 treibt mich in der Experimentierphase / Quick and Dirty Mock-up Phase der Entwicklung in den Wahnsinn.

Ich habe eine pom.xml Datei, die die Abhängigkeiten für das Web-App-Framework definiert, das ich verwenden möchte, und ich kann aus dieser Datei schnell Starterprojekte erstellen. Manchmal möchte ich jedoch auf eine Bibliothek eines Drittanbieters verweisen, für die es noch keine pom.xml Datei definiert, so dass anstelle der Erstellung der pom.xml Datei für die 3rd-Party-Lib von Hand und installieren Sie sie, und fügen Sie die Abhängigkeit zu meinem pom.xml Ich möchte Maven einfach sagen: "Zusätzlich zu meinen definierten Abhängigkeiten, schließe alle Jars ein, die sich in /lib auch".

Das sollte eigentlich ganz einfach sein, aber wenn es so ist, habe ich etwas übersehen.

Für Hinweise, wie dies zu bewerkstelligen ist, bin ich sehr dankbar. Kurz gesagt, wenn es einen einfachen Weg gibt, Maven auf eine /lib Verzeichnis und erstellen Sie einfach eine pom.xml mit allen beiliegenden Jars, die einer einzigen Abhängigkeit zugeordnet sind, die ich dann auf einen Schlag benennen / installieren und verlinken kann, würde ebenfalls ausreichen.

0 Stimmen

Wenn Sie Netbeans verwenden, folgen Sie einfach diesen Schritten: [Wie installiere ich Module in das Maven-Repository mit Netbeans embedded Maven?][1] [1]: stackoverflow.com/a/339874/530153

1 Stimmen

Ich möchte darauf hinweisen, dass dieser Link stackoverflow.com/a/339874/530153 scheint zu funktionieren, um die Gläser einzeln zu installieren.

15voto

Praneel PIDIKITI Punkte 17109

So fügen wir ein lokales Jar hinzu oder installieren es

    <dependency>
        <groupId>org.example</groupId>
        <artifactId>iamajar</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/lib/iamajar.jar</systemPath>
    </dependency>

Ich habe einige Standardwerte für groupId und artifactId angegeben, weil sie obligatorisch sind :)

14voto

Brian Fox Punkte 6604

Sie sollten wirklich einen Rahmen über ein Repository einrichten und Ihre Abhängigkeiten im Voraus identifizieren. Die Verwendung des Systembereichs ist ein häufiger Fehler, den Leute machen, weil sie sich "nicht um das Abhängigkeitsmanagement kümmern". Das Problem ist, dass dies zu einem pervertierten Maven-Build führt, der Maven im Normalzustand nicht anzeigt. Sie wären besser dran, wenn Sie einen Ansatz wie este .

10voto

toad Punkte 1353

Maven-Plugin installieren hat Befehlszeilenverwendung, um ein jar in das lokale Repository zu installieren, POM ist optional, aber Sie müssen die GroupId, ArtifactId, Version und Packaging (all das POM-Zeug) angeben.

0 Stimmen

Eigentlich, was er meinte, ist, dass Sie nicht haben, um ein pom für die Bibliothek zu erstellen, die Sie in Ihr lokales Repository importieren

6 Stimmen

-1, manchmal möchte man einfach nur eine jar-Datei hinzufügen, ohne sie mühsam installieren zu müssen.

0 Stimmen

Die Frage ist über das Hinzufügen von JAR-Dateien ohne Installation und Sie geben eine Antwort mit Maven Install Plugin...

9voto

Jesse Glick Punkte 23182

Verwendung von <scope>system</scope> ist eine schreckliche Idee aus Gründen, die bereits von anderen erläutert wurden. Die manuelle Installation der Datei in Ihr lokales Repository macht die Erstellung nicht reproduzierbar, und die Verwendung von <url>file://${project.basedir}/repo</url> ist auch keine gute Idee, weil (1) das möglicherweise keine wohlgeformte file URL (z.B. wenn das Projekt in einem Verzeichnis mit ungewöhnlichen Zeichen ausgecheckt ist), (2) das Ergebnis ist unbrauchbar, wenn das POM dieses Projekts als Abhängigkeit von einem anderen Projekt verwendet wird.

Angenommen, Sie sind nicht bereit, das Artefakt in ein öffentliches Repository hochzuladen, dann erfüllt Simeons Vorschlag eines Hilfsmoduls die Aufgabe. Aber es gibt jetzt einen einfacheren Weg

Die Empfehlung

Utilice nicht-maven-jar-maven-plugin . Erfüllt genau die Anforderungen, die Sie gestellt haben, ohne die Nachteile der anderen Ansätze.

0 Stimmen

Außerdem sah maven-external-dependency-plugin obwohl non-maven-jar-maven-plugin unkomplizierter zu verwenden ist.

9voto

xbeta Punkte 2347

Ich habe einen anderen Weg gefunden, dies zu tun, siehe hier von einem Heroku-Beitrag

Zusammenfassend (entschuldigen Sie bitte das Kopieren und Einfügen)

  • Erstellen einer repo unter Ihrem Root-Ordner:

    yourproject +- pom.xml +- src +- repo

  • Führen Sie Folgendes aus, um das jar in Ihrem lokalen Repo-Verzeichnis zu installieren

    mvn deploy:deploy-file -Durl=file:///path/to/yourproject/repo/ -Dfile=mylib-1.0.jar -DgroupId=com.example -DartifactId=mylib -Dpackaging=jar -Dversion=1.0

  • Fügen Sie dies Ihrem pom.xml :

<repositories>
    <!--other repositories if any-->
    <repository>
        <id>project.local</id>
        <name>project</name>
        <url>file:${project.basedir}/repo</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.example</groupId>
    <artifactId>mylib</artifactId>
    <version>1.0</version>  
</dependency>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X